@speckle/objectloader2 2.26.1 → 2.26.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.
Files changed (98) hide show
  1. package/dist/commonjs/core/objectLoader2.d.ts.map +1 -1
  2. package/dist/commonjs/core/objectLoader2.js +1 -9
  3. package/dist/commonjs/core/objectLoader2.js.map +1 -1
  4. package/dist/commonjs/core/objectLoader2Factory.d.ts +7 -2
  5. package/dist/commonjs/core/objectLoader2Factory.d.ts.map +1 -1
  6. package/dist/commonjs/core/objectLoader2Factory.js +14 -4
  7. package/dist/commonjs/core/objectLoader2Factory.js.map +1 -1
  8. package/dist/commonjs/core/objectLoader2Factory.test.d.ts +2 -0
  9. package/dist/commonjs/core/objectLoader2Factory.test.d.ts.map +1 -0
  10. package/dist/commonjs/core/objectLoader2Factory.test.js +106 -0
  11. package/dist/commonjs/core/objectLoader2Factory.test.js.map +1 -0
  12. package/dist/commonjs/core/options.d.ts +2 -0
  13. package/dist/commonjs/core/options.d.ts.map +1 -1
  14. package/dist/commonjs/core/stages/cacheReader.d.ts +2 -2
  15. package/dist/commonjs/core/stages/cacheReader.d.ts.map +1 -1
  16. package/dist/commonjs/core/stages/cacheReader.js.map +1 -1
  17. package/dist/commonjs/core/stages/cacheWriter.d.ts +2 -2
  18. package/dist/commonjs/core/stages/cacheWriter.d.ts.map +1 -1
  19. package/dist/commonjs/core/stages/cacheWriter.js +4 -4
  20. package/dist/commonjs/core/stages/cacheWriter.js.map +1 -1
  21. package/dist/commonjs/core/stages/serverDownloader.d.ts +2 -1
  22. package/dist/commonjs/core/stages/serverDownloader.d.ts.map +1 -1
  23. package/dist/commonjs/core/stages/serverDownloader.js +3 -2
  24. package/dist/commonjs/core/stages/serverDownloader.js.map +1 -1
  25. package/dist/commonjs/deferment/defermentManager.d.ts +18 -2
  26. package/dist/commonjs/deferment/defermentManager.d.ts.map +1 -1
  27. package/dist/commonjs/deferment/defermentManager.js +30 -3
  28. package/dist/commonjs/deferment/defermentManager.js.map +1 -1
  29. package/dist/commonjs/deferment/defermentManager.test.js +21 -16
  30. package/dist/commonjs/deferment/defermentManager.test.js.map +1 -1
  31. package/dist/commonjs/queues/batchingQueue.d.ts +2 -2
  32. package/dist/commonjs/queues/batchingQueue.d.ts.map +1 -1
  33. package/dist/commonjs/queues/batchingQueue.dispose.test.js +1 -3
  34. package/dist/commonjs/queues/batchingQueue.dispose.test.js.map +1 -1
  35. package/dist/commonjs/queues/batchingQueue.js +20 -15
  36. package/dist/commonjs/queues/batchingQueue.js.map +1 -1
  37. package/dist/commonjs/queues/batchingQueue.test.js +98 -0
  38. package/dist/commonjs/queues/batchingQueue.test.js.map +1 -1
  39. package/dist/commonjs/types/types.d.ts +5 -0
  40. package/dist/commonjs/types/types.d.ts.map +1 -1
  41. package/dist/esm/core/objectLoader2.d.ts.map +1 -1
  42. package/dist/esm/core/objectLoader2.js +1 -9
  43. package/dist/esm/core/objectLoader2.js.map +1 -1
  44. package/dist/esm/core/objectLoader2Factory.d.ts +7 -2
  45. package/dist/esm/core/objectLoader2Factory.d.ts.map +1 -1
  46. package/dist/esm/core/objectLoader2Factory.js +14 -4
  47. package/dist/esm/core/objectLoader2Factory.js.map +1 -1
  48. package/dist/esm/core/objectLoader2Factory.test.d.ts +2 -0
  49. package/dist/esm/core/objectLoader2Factory.test.d.ts.map +1 -0
  50. package/dist/esm/core/objectLoader2Factory.test.js +104 -0
  51. package/dist/esm/core/objectLoader2Factory.test.js.map +1 -0
  52. package/dist/esm/core/options.d.ts +2 -0
  53. package/dist/esm/core/options.d.ts.map +1 -1
  54. package/dist/esm/core/stages/cacheReader.d.ts +2 -2
  55. package/dist/esm/core/stages/cacheReader.d.ts.map +1 -1
  56. package/dist/esm/core/stages/cacheReader.js.map +1 -1
  57. package/dist/esm/core/stages/cacheWriter.d.ts +2 -2
  58. package/dist/esm/core/stages/cacheWriter.d.ts.map +1 -1
  59. package/dist/esm/core/stages/cacheWriter.js +4 -4
  60. package/dist/esm/core/stages/cacheWriter.js.map +1 -1
  61. package/dist/esm/core/stages/serverDownloader.d.ts +2 -1
  62. package/dist/esm/core/stages/serverDownloader.d.ts.map +1 -1
  63. package/dist/esm/core/stages/serverDownloader.js +3 -2
  64. package/dist/esm/core/stages/serverDownloader.js.map +1 -1
  65. package/dist/esm/deferment/defermentManager.d.ts +18 -2
  66. package/dist/esm/deferment/defermentManager.d.ts.map +1 -1
  67. package/dist/esm/deferment/defermentManager.js +28 -2
  68. package/dist/esm/deferment/defermentManager.js.map +1 -1
  69. package/dist/esm/deferment/defermentManager.test.js +21 -16
  70. package/dist/esm/deferment/defermentManager.test.js.map +1 -1
  71. package/dist/esm/queues/batchingQueue.d.ts +2 -2
  72. package/dist/esm/queues/batchingQueue.d.ts.map +1 -1
  73. package/dist/esm/queues/batchingQueue.dispose.test.js +1 -3
  74. package/dist/esm/queues/batchingQueue.dispose.test.js.map +1 -1
  75. package/dist/esm/queues/batchingQueue.js +20 -15
  76. package/dist/esm/queues/batchingQueue.js.map +1 -1
  77. package/dist/esm/queues/batchingQueue.test.js +98 -0
  78. package/dist/esm/queues/batchingQueue.test.js.map +1 -1
  79. package/dist/esm/types/types.d.ts +5 -0
  80. package/dist/esm/types/types.d.ts.map +1 -1
  81. package/package.json +2 -2
  82. package/src/core/objectLoader2.spec.ts +10 -3
  83. package/src/core/objectLoader2.ts +3 -13
  84. package/src/core/objectLoader2Factory.test.ts +135 -0
  85. package/src/core/objectLoader2Factory.ts +29 -6
  86. package/src/core/options.ts +2 -0
  87. package/src/core/stages/cacheReader.spec.ts +1 -1
  88. package/src/core/stages/cacheReader.ts +3 -3
  89. package/src/core/stages/cacheWriter.spec.ts +1 -1
  90. package/src/core/stages/cacheWriter.ts +5 -5
  91. package/src/core/stages/serverDownloader.spec.ts +122 -0
  92. package/src/core/stages/serverDownloader.ts +7 -4
  93. package/src/deferment/defermentManager.test.ts +21 -16
  94. package/src/deferment/defermentManager.ts +39 -3
  95. package/src/queues/batchingQueue.dispose.test.ts +1 -3
  96. package/src/queues/batchingQueue.test.ts +121 -0
  97. package/src/queues/batchingQueue.ts +21 -19
  98. package/src/types/types.ts +5 -0
@@ -1,4 +1,3 @@
1
- import { CustomLogger } from '../types/functions.js'
2
1
  import KeyedQueue from './keyedQueue.js'
3
2
 
4
3
  /**
@@ -12,10 +11,10 @@ export default class BatchingQueue<T> {
12
11
  #batchSize: number
13
12
  #processFunction: (batch: T[]) => Promise<void>
14
13
  #timeoutId: ReturnType<typeof setTimeout> | null = null
15
- #isProcessing = false
16
- #logger: CustomLogger
17
14
 
18
- #disposed = false
15
+ #isProcessing = false
16
+ #isDisposed = false
17
+ #isErrored = false
19
18
  #batchTimeout: number
20
19
 
21
20
  // Helper methods for cross-environment timeout handling
@@ -41,16 +40,15 @@ export default class BatchingQueue<T> {
41
40
  batchSize: number
42
41
  maxWaitTime: number
43
42
  processFunction: (batch: T[]) => Promise<void>
44
- logger?: CustomLogger
45
43
  }) {
46
44
  this.#batchSize = params.batchSize
47
45
  this.#processFunction = params.processFunction
48
46
  this.#batchTimeout = params.maxWaitTime
49
- this.#logger = params.logger || ((): void => {})
50
47
  }
51
48
 
52
49
  async disposeAsync(): Promise<void> {
53
- this.#disposed = true
50
+ if (this.#isDisposed) return
51
+ this.#isDisposed = true
54
52
  if (this.#timeoutId) {
55
53
  this.#getClearTimeoutFn()(this.#timeoutId)
56
54
  this.#timeoutId = null
@@ -66,54 +64,54 @@ export default class BatchingQueue<T> {
66
64
  // After any ongoing flush is completed, there might be items in the queue.
67
65
  // We should flush them.
68
66
  if (this.#queue.size > 0) {
69
- await this.#flush()
67
+ await this.flush()
70
68
  }
71
69
  }
72
70
 
73
71
  add(key: string, item: T): void {
74
- if (this.#disposed) return
72
+ if (this.#isDisposed || this.#isErrored) return
75
73
  this.#queue.enqueue(key, item)
76
74
  this.#addCheck()
77
75
  }
78
76
 
79
77
  addAll(keys: string[], items: T[]): void {
80
- if (this.#disposed) return
78
+ if (this.#isDisposed || this.#isErrored) return
81
79
  this.#queue.enqueueAll(keys, items)
82
80
  this.#addCheck()
83
81
  }
84
82
 
85
83
  #addCheck(): void {
86
- if (this.#disposed) return
84
+ if (this.#isDisposed) return
87
85
  if (this.#queue.size >= this.#batchSize) {
88
86
  // Fire and forget, no need to await
89
87
  // eslint-disable-next-line @typescript-eslint/no-floating-promises
90
- this.#flush()
88
+ this.flush()
91
89
  } else {
92
90
  if (this.#timeoutId) {
93
91
  this.#getClearTimeoutFn()(this.#timeoutId)
94
92
  }
95
93
  // eslint-disable-next-line @typescript-eslint/no-misused-promises
96
- this.#timeoutId = this.#getSetTimeoutFn()(() => this.#flush(), this.#batchTimeout)
94
+ this.#timeoutId = this.#getSetTimeoutFn()(() => this.flush(), this.#batchTimeout)
97
95
  }
98
96
  }
99
97
 
100
- async #flush(): Promise<void> {
98
+ async flush(): Promise<void> {
101
99
  if (this.#timeoutId) {
102
100
  this.#getClearTimeoutFn()(this.#timeoutId)
103
101
  this.#timeoutId = null
104
102
  }
105
103
 
106
- if (this.#isProcessing || this.#queue.size === 0) {
104
+ if (this.#isErrored || this.#isProcessing || this.#queue.size === 0) {
107
105
  return
108
106
  }
109
107
  this.#isProcessing = true
110
108
 
111
- const batchToProcess = this.#getBatch(this.#batchSize)
112
-
113
109
  try {
110
+ const batchToProcess = this.#getBatch(this.#batchSize)
114
111
  await this.#processFunction(batchToProcess)
115
112
  } catch (error) {
116
- this.#logger('Batch processing failed:', error)
113
+ console.error('Batch processing failed:', error)
114
+ this.#isErrored = true
117
115
  } finally {
118
116
  this.#isProcessing = false
119
117
  }
@@ -129,7 +127,11 @@ export default class BatchingQueue<T> {
129
127
  }
130
128
 
131
129
  isDisposed(): boolean {
132
- return this.#disposed
130
+ return this.#isDisposed
131
+ }
132
+
133
+ isErrored(): boolean {
134
+ return this.#isErrored
133
135
  }
134
136
 
135
137
  #getBatch(batchSize: number): T[] {
@@ -19,3 +19,8 @@ export interface Reference {
19
19
  export interface DataChunk extends Base {
20
20
  data?: Base[]
21
21
  }
22
+
23
+ export type ObjectAttributeMask =
24
+ | { include: string[] }
25
+ | { exclude: string[] }
26
+ | undefined