@smoothbricks/lmao 0.1.1 → 0.1.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.
Binary file
@@ -1 +1 @@
1
- {"version":3,"file":"flushScheduler.d.ts","sourceRoot":"","sources":["../../src/lib/flushScheduler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAU,KAAK,KAAK,EAAoB,MAAM,mBAAmB,CAAC;AAIzE,OAAO,KAAK,EAAE,aAAa,EAAc,MAAM,YAAY,CAAC;AAiC5D;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAE3F;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;IAChE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC;AAED;;;GAGG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,OAAO,CAAe;IAE9B,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,gBAAgB,CAAc;IACtC,OAAO,CAAC,UAAU,CAAC,CAAiB;IACpC,OAAO,CAAC,SAAS,CAAC,CAAiB;IACnC,OAAO,CAAC,WAAW,CAAC,CAAiB;IACrC,OAAO,CAAC,SAAS,CAAS;IAE1B,wDAAwD;IACxD,OAAO,CAAC,WAAW,CAAK;IAExB;;;;OAIG;IACH,OAAO,CAAC,+BAA+B,CAAgD;gBAE3E,OAAO,EAAE,YAAY,EAAE,MAAM,GAAE,oBAAyB;IAepE;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAUrC;;OAEG;IACH,KAAK,IAAI,IAAI;IA2Bb;;OAEG;IACH,IAAI,IAAI,IAAI;IAqBZ;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAiB5B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAU7B;;OAEG;IACH,OAAO,CAAC,cAAc;IAatB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAe3B;;OAEG;YACW,OAAO;IA+IrB;;OAEG;IACH,cAAc,IAAI,IAAI;CAGvB;AAQD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,oBAAoB,GAAG,cAAc,CAK5G;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CAKhD;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB;IAClC;;OAEG;6BACsB,cAAc,GAAG,MAAM,CAAC,OAAO,GAAG,SAAS;IAKpE;;OAEG;6BACsB,cAAc,SAAS,MAAM,CAAC,OAAO,GAAG,SAAS,GAAG,IAAI;IAIjF;;OAEG;mCAC4B,cAAc,GAAG,MAAM,GAAG,SAAS;IAKlE;;OAEG;mCAC4B,cAAc,QAAQ,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI;CAGtF,CAAC"}
1
+ {"version":3,"file":"flushScheduler.d.ts","sourceRoot":"","sources":["../../src/lib/flushScheduler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAU,KAAK,KAAK,EAAoB,MAAM,mBAAmB,CAAC;AAIzE,OAAO,KAAK,EAAE,aAAa,EAAc,MAAM,YAAY,CAAC;AAuC5D;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAE3F;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;IAChE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC;AAED;;;GAGG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,OAAO,CAAe;IAE9B,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,gBAAgB,CAAc;IACtC,OAAO,CAAC,UAAU,CAAC,CAAiB;IACpC,OAAO,CAAC,SAAS,CAAC,CAAiB;IACnC,OAAO,CAAC,WAAW,CAAC,CAAiB;IACrC,OAAO,CAAC,SAAS,CAAS;IAE1B,wDAAwD;IACxD,OAAO,CAAC,WAAW,CAAK;IAExB;;;;OAIG;IACH,OAAO,CAAC,+BAA+B,CAAgD;gBAE3E,OAAO,EAAE,YAAY,EAAE,MAAM,GAAE,oBAAyB;IAepE;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAUrC;;OAEG;IACH,KAAK,IAAI,IAAI;IA8Bb;;OAEG;IACH,IAAI,IAAI,IAAI;IAqBZ;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAiB5B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAU7B;;OAEG;IACH,OAAO,CAAC,cAAc;IAatB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAe3B;;OAEG;YACW,OAAO;IA+IrB;;OAEG;IACH,cAAc,IAAI,IAAI;CAGvB;AAQD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,oBAAoB,GAAG,cAAc,CAK5G;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CAKhD;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB;IAClC;;OAEG;6BACsB,cAAc,GAAG,MAAM,CAAC,OAAO,GAAG,SAAS;IAKpE;;OAEG;6BACsB,cAAc,SAAS,MAAM,CAAC,OAAO,GAAG,SAAS,GAAG,IAAI;IAIjF;;OAEG;mCAC4B,cAAc,GAAG,MAAM,GAAG,SAAS;IAKlE;;OAEG;mCAC4B,cAAc,QAAQ,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI;CAGtF,CAAC"}
@@ -19,6 +19,11 @@ function isSpanBufferConstructor(value) {
19
19
  function isNodeTimer(value) {
20
20
  return typeof value === 'object' && value !== null && typeof Reflect.get(value, 'hasRef') === 'function';
21
21
  }
22
+ function unrefTimer(timer) {
23
+ if (isNodeTimer(timer)) {
24
+ timer.unref();
25
+ }
26
+ }
22
27
  function mergeTables(first, rest) {
23
28
  if (rest.length === 0)
24
29
  return first;
@@ -94,17 +99,20 @@ export class FlushScheduler {
94
99
  this.flushTimer = setInterval(() => {
95
100
  this.checkFlushConditions();
96
101
  }, 1000); // Check every second
102
+ unrefTimer(this.flushTimer);
97
103
  // Set up idle detection timer
98
104
  if (this.config.idleDetection) {
99
105
  this.idleTimer = setInterval(() => {
100
106
  this.checkIdleFlush();
101
107
  }, this.config.idleTimeout);
108
+ unrefTimer(this.idleTimer);
102
109
  }
103
110
  // Set up memory pressure timer (Node.js only)
104
111
  if (this.config.memoryPressureDetection && typeof process !== 'undefined') {
105
112
  this.memoryTimer = setInterval(() => {
106
113
  this.checkMemoryPressure();
107
114
  }, 2000); // Check every 2 seconds
115
+ unrefTimer(this.memoryTimer);
108
116
  }
109
117
  }
110
118
  /**
@@ -88,9 +88,9 @@ export declare enum SizeClass {
88
88
  Identity = 4
89
89
  }
90
90
  export interface WasmAllocatorOptions {
91
- /** Initial memory pages (64KB each). Default: 17 (~1MB) */
91
+ /** Initial memory pages (64KB each). Values below the module minimum are clamped. */
92
92
  initialPages?: number;
93
- /** Maximum memory pages. Default: 16384 (1GB) */
93
+ /** Maximum memory pages. Values below the effective initial page count are clamped. */
94
94
  maxPages?: number;
95
95
  /** Default capacity (rows per span buffer). Default: 64 */
96
96
  capacity?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"wasmAllocator.d.ts","sourceRoot":"","sources":["../../../src/lib/wasm/wasmAllocator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wasmAllocator.d.ts","sourceRoot":"","sources":["../../../src/lib/wasm/wasmAllocator.ts"],"names":[],"mappings":"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"}
@@ -18,7 +18,7 @@ function isWasmExports(value) {
18
18
  // =============================================================================
19
19
  // Implementation
20
20
  // =============================================================================
21
- const DEFAULT_INITIAL_PAGES = 17; // ~1MB - matches WASM module minimum
21
+ const MIN_INITIAL_PAGES = 17; // ~1MB - matches WASM module minimum
22
22
  const DEFAULT_MAX_PAGES = 16384; // 1GB max (can grow up to this)
23
23
  const DEFAULT_CAPACITY = 64;
24
24
  /**
@@ -193,8 +193,8 @@ async function getWasmModule() {
193
193
  * Buddy allocation enables efficient memory management across different capacities.
194
194
  */
195
195
  export async function createWasmAllocator(options) {
196
- const initialPages = options?.initialPages ?? DEFAULT_INITIAL_PAGES;
197
- const maxPages = options?.maxPages ?? DEFAULT_MAX_PAGES;
196
+ const initialPages = Math.max(options?.initialPages ?? MIN_INITIAL_PAGES, MIN_INITIAL_PAGES);
197
+ const maxPages = Math.max(options?.maxPages ?? DEFAULT_MAX_PAGES, initialPages);
198
198
  const capacity = options?.capacity ?? DEFAULT_CAPACITY;
199
199
  // Create memory
200
200
  const memory = new WebAssembly.Memory({
@@ -212,8 +212,8 @@ export async function createWasmAllocator(options) {
212
212
  * Synchronous version for when WASM is pre-loaded.
213
213
  */
214
214
  export function createWasmAllocatorSync(wasmModule, options) {
215
- const initialPages = options?.initialPages ?? DEFAULT_INITIAL_PAGES;
216
- const maxPages = options?.maxPages ?? DEFAULT_MAX_PAGES;
215
+ const initialPages = Math.max(options?.initialPages ?? MIN_INITIAL_PAGES, MIN_INITIAL_PAGES);
216
+ const maxPages = Math.max(options?.maxPages ?? DEFAULT_MAX_PAGES, initialPages);
217
217
  const capacity = options?.capacity ?? DEFAULT_CAPACITY;
218
218
  // Create memory
219
219
  const memory = new WebAssembly.Memory({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smoothbricks/lmao",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "type": "module",
5
5
  "sideEffects": false,
6
6
  "main": "./dist/index.js",
@@ -139,24 +139,6 @@
139
139
  "^typecheck"
140
140
  ]
141
141
  },
142
- "build:wasm": {
143
- "inputs": [
144
- "{projectRoot}/src/**/*.zig",
145
- "{projectRoot}/build.zig",
146
- "{projectRoot}/build.zig.zon"
147
- ],
148
- "executor": "nx:run-commands",
149
- "options": {
150
- "command": "zig build -Doptimize=ReleaseSmall",
151
- "cwd": "packages/lmao"
152
- }
153
- },
154
- "build": {
155
- "dependsOn": [
156
- "^build",
157
- "build:wasm"
158
- ]
159
- },
160
142
  "test": {
161
143
  "executor": "nx:run-commands",
162
144
  "options": {
@@ -167,7 +149,8 @@
167
149
  },
168
150
  "tags": [
169
151
  "npm:public"
170
- ]
152
+ ],
153
+ "name": "lmao"
171
154
  },
172
155
  "devDependencies": {
173
156
  "fast-check": "^4.4.0",
@@ -191,13 +191,20 @@ describe('FlushScheduler', () => {
191
191
  describe('failure cases', () => {
192
192
  it('should not throw if timers fail to clear', () => {
193
193
  scheduler.start();
194
+ const originalFlushTimer = FlushSchedulerTestUtils.getFlushTimer(scheduler);
194
195
 
195
196
  // Force internal state corruption - accessing private property for testing
196
197
  FlushSchedulerTestUtils.setFlushTimer(scheduler, undefined);
197
198
 
198
- expect(() => {
199
- scheduler.stop();
200
- }).not.toThrow();
199
+ try {
200
+ expect(() => {
201
+ scheduler.stop();
202
+ }).not.toThrow();
203
+ } finally {
204
+ if (originalFlushTimer) {
205
+ clearInterval(originalFlushTimer);
206
+ }
207
+ }
201
208
  });
202
209
  });
203
210
  });
@@ -27,6 +27,12 @@ function isNodeTimer(value: unknown): value is NodeJS.Timeout {
27
27
  return typeof value === 'object' && value !== null && typeof Reflect.get(value, 'hasRef') === 'function';
28
28
  }
29
29
 
30
+ function unrefTimer(timer: unknown): void {
31
+ if (isNodeTimer(timer)) {
32
+ timer.unref();
33
+ }
34
+ }
35
+
30
36
  function mergeTables(first: Table, rest: Table[]): Table {
31
37
  if (rest.length === 0) return first;
32
38
 
@@ -177,12 +183,14 @@ export class FlushScheduler {
177
183
  this.flushTimer = setInterval(() => {
178
184
  this.checkFlushConditions();
179
185
  }, 1000); // Check every second
186
+ unrefTimer(this.flushTimer);
180
187
 
181
188
  // Set up idle detection timer
182
189
  if (this.config.idleDetection) {
183
190
  this.idleTimer = setInterval(() => {
184
191
  this.checkIdleFlush();
185
192
  }, this.config.idleTimeout);
193
+ unrefTimer(this.idleTimer);
186
194
  }
187
195
 
188
196
  // Set up memory pressure timer (Node.js only)
@@ -190,6 +198,7 @@ export class FlushScheduler {
190
198
  this.memoryTimer = setInterval(() => {
191
199
  this.checkMemoryPressure();
192
200
  }, 2000); // Check every 2 seconds
201
+ unrefTimer(this.memoryTimer);
193
202
  }
194
203
  }
195
204
 
@@ -132,9 +132,9 @@ export enum SizeClass {
132
132
  }
133
133
 
134
134
  export interface WasmAllocatorOptions {
135
- /** Initial memory pages (64KB each). Default: 17 (~1MB) */
135
+ /** Initial memory pages (64KB each). Values below the module minimum are clamped. */
136
136
  initialPages?: number;
137
- /** Maximum memory pages. Default: 16384 (1GB) */
137
+ /** Maximum memory pages. Values below the effective initial page count are clamped. */
138
138
  maxPages?: number;
139
139
  /** Default capacity (rows per span buffer). Default: 64 */
140
140
  capacity?: number;
@@ -225,7 +225,7 @@ function isWasmExports(value: unknown): value is WasmExports {
225
225
  // Implementation
226
226
  // =============================================================================
227
227
 
228
- const DEFAULT_INITIAL_PAGES = 17; // ~1MB - matches WASM module minimum
228
+ const MIN_INITIAL_PAGES = 17; // ~1MB - matches WASM module minimum
229
229
  const DEFAULT_MAX_PAGES = 16384; // 1GB max (can grow up to this)
230
230
  const DEFAULT_CAPACITY = 64;
231
231
 
@@ -427,8 +427,8 @@ async function getWasmModule(): Promise<WebAssembly.Module> {
427
427
  * Buddy allocation enables efficient memory management across different capacities.
428
428
  */
429
429
  export async function createWasmAllocator(options?: WasmAllocatorOptions): Promise<WasmAllocator> {
430
- const initialPages = options?.initialPages ?? DEFAULT_INITIAL_PAGES;
431
- const maxPages = options?.maxPages ?? DEFAULT_MAX_PAGES;
430
+ const initialPages = Math.max(options?.initialPages ?? MIN_INITIAL_PAGES, MIN_INITIAL_PAGES);
431
+ const maxPages = Math.max(options?.maxPages ?? DEFAULT_MAX_PAGES, initialPages);
432
432
  const capacity = options?.capacity ?? DEFAULT_CAPACITY;
433
433
 
434
434
  // Create memory
@@ -451,8 +451,8 @@ export async function createWasmAllocator(options?: WasmAllocatorOptions): Promi
451
451
  * Synchronous version for when WASM is pre-loaded.
452
452
  */
453
453
  export function createWasmAllocatorSync(wasmModule: WebAssembly.Module, options?: WasmAllocatorOptions): WasmAllocator {
454
- const initialPages = options?.initialPages ?? DEFAULT_INITIAL_PAGES;
455
- const maxPages = options?.maxPages ?? DEFAULT_MAX_PAGES;
454
+ const initialPages = Math.max(options?.initialPages ?? MIN_INITIAL_PAGES, MIN_INITIAL_PAGES);
455
+ const maxPages = Math.max(options?.maxPages ?? DEFAULT_MAX_PAGES, initialPages);
456
456
  const capacity = options?.capacity ?? DEFAULT_CAPACITY;
457
457
 
458
458
  // Create memory