@chonkiejs/chunk 0.10.0 → 0.10.1

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/index.js CHANGED
@@ -74,14 +74,14 @@ function toBytes(input) {
74
74
  export function* chunk(text, options = {}) {
75
75
  const isString = typeof text === 'string';
76
76
  const bytes = toBytes(text);
77
- const { size, delimiters, pattern, prefix, consecutive, forwardFallback } = options;
77
+ const { size, delimiters, pattern, patterns, prefix, consecutive, forwardFallback } = options;
78
78
 
79
79
  let flat;
80
80
  if (pattern) {
81
81
  const patternBytes = toBytes(pattern);
82
82
  flat = wasmChunkOffsetsPattern(bytes, size ?? 4096, patternBytes, prefix, consecutive, forwardFallback);
83
83
  } else {
84
- flat = wasmChunkOffsets(bytes, size, delimiters, prefix);
84
+ flat = wasmChunkOffsets(bytes, size, delimiters, prefix, consecutive, forwardFallback, patterns);
85
85
  }
86
86
 
87
87
  for (let i = 0; i < flat.length; i += 2) {
@@ -99,6 +99,7 @@ export function* chunk(text, options = {}) {
99
99
  * @param {number} [options.size=4096] - Target chunk size in bytes
100
100
  * @param {string} [options.delimiters="\n.?"] - Delimiter characters
101
101
  * @param {string | Uint8Array} [options.pattern] - Multi-byte pattern to split on
102
+ * @param {string[]} [options.patterns] - Multi-byte patterns, composable with delimiters
102
103
  * @param {boolean} [options.prefix=false] - Put delimiter/pattern at start of next chunk
103
104
  * @param {boolean} [options.consecutive=false] - Split at START of consecutive runs
104
105
  * @param {boolean} [options.forwardFallback=false] - Search forward if no pattern in backward window
@@ -106,14 +107,14 @@ export function* chunk(text, options = {}) {
106
107
  */
107
108
  export function chunk_offsets(text, options = {}) {
108
109
  const bytes = toBytes(text);
109
- const { size, delimiters, pattern, prefix, consecutive, forwardFallback } = options;
110
+ const { size, delimiters, pattern, patterns, prefix, consecutive, forwardFallback } = options;
110
111
 
111
112
  let flat;
112
113
  if (pattern) {
113
114
  const patternBytes = toBytes(pattern);
114
115
  flat = wasmChunkOffsetsPattern(bytes, size ?? 4096, patternBytes, prefix, consecutive, forwardFallback);
115
116
  } else {
116
- flat = wasmChunkOffsets(bytes, size, delimiters, prefix);
117
+ flat = wasmChunkOffsets(bytes, size, delimiters, prefix, consecutive, forwardFallback, patterns);
117
118
  }
118
119
 
119
120
  const pairs = [];
@@ -275,6 +276,7 @@ export class Chunker {
275
276
  * @param {number} [options.size=4096] - Target chunk size in bytes
276
277
  * @param {string} [options.delimiters="\n.?"] - Delimiter characters
277
278
  * @param {string | Uint8Array} [options.pattern] - Multi-byte pattern to split on
279
+ * @param {string[]} [options.patterns] - Multi-byte patterns, composable with delimiters
278
280
  * @param {boolean} [options.prefix=false] - Put delimiter/pattern at start of next chunk
279
281
  * @param {boolean} [options.consecutive=false] - Split at START of consecutive runs
280
282
  * @param {boolean} [options.forwardFallback=false] - Search forward if no pattern in backward window
@@ -282,13 +284,13 @@ export class Chunker {
282
284
  constructor(text, options = {}) {
283
285
  this._isString = typeof text === 'string';
284
286
  const bytes = toBytes(text);
285
- const { size, delimiters, pattern, prefix, consecutive, forwardFallback } = options;
287
+ const { size, delimiters, pattern, patterns, prefix, consecutive, forwardFallback } = options;
286
288
 
287
289
  if (pattern) {
288
290
  const patternBytes = toBytes(pattern);
289
291
  this._chunker = WasmChunker.with_pattern(bytes, size ?? 4096, patternBytes, prefix, consecutive, forwardFallback);
290
292
  } else {
291
- this._chunker = new WasmChunker(bytes, size, delimiters, prefix);
293
+ this._chunker = new WasmChunker(bytes, size, delimiters, prefix, consecutive, forwardFallback, patterns);
292
294
  }
293
295
  }
294
296
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chonkiejs/chunk",
3
- "version": "0.10.0",
3
+ "version": "0.10.1",
4
4
  "description": "The fastest semantic text chunking library",
5
5
  "type": "module",
6
6
  "main": "index.js",
@@ -30,7 +30,7 @@ export class Chunker {
30
30
  * @param consecutive - Split at START of consecutive runs (default: false)
31
31
  * @param forward_fallback - Search forward if no delimiter in backward window (default: false)
32
32
  */
33
- constructor(text: Uint8Array, size?: number | null, delimiters?: string | null, prefix?: boolean | null, consecutive?: boolean | null, forward_fallback?: boolean | null);
33
+ constructor(text: Uint8Array, size?: number | null, delimiters?: string | null, prefix?: boolean | null, consecutive?: boolean | null, forward_fallback?: boolean | null, patterns?: Array<any> | null);
34
34
  /**
35
35
  * Get the next chunk, or undefined if exhausted.
36
36
  */
@@ -55,7 +55,7 @@ export class Chunker {
55
55
  * }
56
56
  * ```
57
57
  */
58
- export function chunk_offsets(text: Uint8Array, size?: number | null, delimiters?: string | null, prefix?: boolean | null, consecutive?: boolean | null, forward_fallback?: boolean | null): Uint32Array;
58
+ export function chunk_offsets(text: Uint8Array, size?: number | null, delimiters?: string | null, prefix?: boolean | null, consecutive?: boolean | null, forward_fallback?: boolean | null, patterns?: Array<any> | null): Uint32Array;
59
59
 
60
60
  /**
61
61
  * Fast chunking function with multi-byte pattern support.
@@ -152,10 +152,10 @@ export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembl
152
152
  export interface InitOutput {
153
153
  readonly memory: WebAssembly.Memory;
154
154
  readonly __wbg_chunker_free: (a: number, b: number) => void;
155
- readonly chunk_offsets: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number];
155
+ readonly chunk_offsets: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => [number, number];
156
156
  readonly chunk_offsets_pattern: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number];
157
157
  readonly chunker_collect_offsets: (a: number) => [number, number];
158
- readonly chunker_new: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => number;
158
+ readonly chunker_new: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => number;
159
159
  readonly chunker_next: (a: number) => [number, number];
160
160
  readonly chunker_reset: (a: number) => void;
161
161
  readonly chunker_with_pattern: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => number;
@@ -164,10 +164,11 @@ export interface InitOutput {
164
164
  readonly find_merge_indices: (a: number, b: number, c: number) => [number, number];
165
165
  readonly merge_splits: (a: number, b: number, c: number, d: number) => [number, number];
166
166
  readonly split_offsets: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
167
- readonly __wbindgen_externrefs: WebAssembly.Table;
168
167
  readonly __wbindgen_malloc: (a: number, b: number) => number;
169
168
  readonly __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
169
+ readonly __wbindgen_externrefs: WebAssembly.Table;
170
170
  readonly __wbindgen_free: (a: number, b: number, c: number) => void;
171
+ readonly __externref_table_alloc: () => number;
171
172
  readonly __wbindgen_start: () => void;
172
173
  }
173
174
 
@@ -1,5 +1,11 @@
1
1
  let wasm;
2
2
 
3
+ function addToExternrefTable0(obj) {
4
+ const idx = wasm.__externref_table_alloc();
5
+ wasm.__wbindgen_externrefs.set(idx, obj);
6
+ return idx;
7
+ }
8
+
3
9
  function getArrayU32FromWasm0(ptr, len) {
4
10
  ptr = ptr >>> 0;
5
11
  return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);
@@ -10,6 +16,14 @@ function getArrayU8FromWasm0(ptr, len) {
10
16
  return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);
11
17
  }
12
18
 
19
+ let cachedDataViewMemory0 = null;
20
+ function getDataViewMemory0() {
21
+ if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {
22
+ cachedDataViewMemory0 = new DataView(wasm.memory.buffer);
23
+ }
24
+ return cachedDataViewMemory0;
25
+ }
26
+
13
27
  function getStringFromWasm0(ptr, len) {
14
28
  ptr = ptr >>> 0;
15
29
  return decodeText(ptr, len);
@@ -207,13 +221,14 @@ export class Chunker {
207
221
  * @param {boolean | null} [prefix]
208
222
  * @param {boolean | null} [consecutive]
209
223
  * @param {boolean | null} [forward_fallback]
224
+ * @param {Array<any> | null} [patterns]
210
225
  */
211
- constructor(text, size, delimiters, prefix, consecutive, forward_fallback) {
226
+ constructor(text, size, delimiters, prefix, consecutive, forward_fallback, patterns) {
212
227
  const ptr0 = passArray8ToWasm0(text, wasm.__wbindgen_malloc);
213
228
  const len0 = WASM_VECTOR_LEN;
214
229
  var ptr1 = isLikeNone(delimiters) ? 0 : passStringToWasm0(delimiters, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
215
230
  var len1 = WASM_VECTOR_LEN;
216
- const ret = wasm.chunker_new(ptr0, len0, isLikeNone(size) ? 0x100000001 : (size) >>> 0, ptr1, len1, isLikeNone(prefix) ? 0xFFFFFF : prefix ? 1 : 0, isLikeNone(consecutive) ? 0xFFFFFF : consecutive ? 1 : 0, isLikeNone(forward_fallback) ? 0xFFFFFF : forward_fallback ? 1 : 0);
231
+ const ret = wasm.chunker_new(ptr0, len0, isLikeNone(size) ? 0x100000001 : (size) >>> 0, ptr1, len1, isLikeNone(prefix) ? 0xFFFFFF : prefix ? 1 : 0, isLikeNone(consecutive) ? 0xFFFFFF : consecutive ? 1 : 0, isLikeNone(forward_fallback) ? 0xFFFFFF : forward_fallback ? 1 : 0, isLikeNone(patterns) ? 0 : addToExternrefTable0(patterns));
217
232
  this.__wbg_ptr = ret >>> 0;
218
233
  ChunkerFinalization.register(this, this.__wbg_ptr, this);
219
234
  return this;
@@ -259,14 +274,15 @@ if (Symbol.dispose) Chunker.prototype[Symbol.dispose] = Chunker.prototype.free;
259
274
  * @param {boolean | null} [prefix]
260
275
  * @param {boolean | null} [consecutive]
261
276
  * @param {boolean | null} [forward_fallback]
277
+ * @param {Array<any> | null} [patterns]
262
278
  * @returns {Uint32Array}
263
279
  */
264
- export function chunk_offsets(text, size, delimiters, prefix, consecutive, forward_fallback) {
280
+ export function chunk_offsets(text, size, delimiters, prefix, consecutive, forward_fallback, patterns) {
265
281
  const ptr0 = passArray8ToWasm0(text, wasm.__wbindgen_malloc);
266
282
  const len0 = WASM_VECTOR_LEN;
267
283
  var ptr1 = isLikeNone(delimiters) ? 0 : passStringToWasm0(delimiters, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
268
284
  var len1 = WASM_VECTOR_LEN;
269
- const ret = wasm.chunk_offsets(ptr0, len0, isLikeNone(size) ? 0x100000001 : (size) >>> 0, ptr1, len1, isLikeNone(prefix) ? 0xFFFFFF : prefix ? 1 : 0, isLikeNone(consecutive) ? 0xFFFFFF : consecutive ? 1 : 0, isLikeNone(forward_fallback) ? 0xFFFFFF : forward_fallback ? 1 : 0);
285
+ const ret = wasm.chunk_offsets(ptr0, len0, isLikeNone(size) ? 0x100000001 : (size) >>> 0, ptr1, len1, isLikeNone(prefix) ? 0xFFFFFF : prefix ? 1 : 0, isLikeNone(consecutive) ? 0xFFFFFF : consecutive ? 1 : 0, isLikeNone(forward_fallback) ? 0xFFFFFF : forward_fallback ? 1 : 0, isLikeNone(patterns) ? 0 : addToExternrefTable0(patterns));
270
286
  var v3 = getArrayU32FromWasm0(ret[0], ret[1]).slice();
271
287
  wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
272
288
  return v3;
@@ -460,9 +476,25 @@ async function __wbg_load(module, imports) {
460
476
  function __wbg_get_imports() {
461
477
  const imports = {};
462
478
  imports.wbg = {};
479
+ imports.wbg.__wbg___wbindgen_string_get_a2a31e16edf96e42 = function(arg0, arg1) {
480
+ const obj = arg1;
481
+ const ret = typeof(obj) === 'string' ? obj : undefined;
482
+ var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
483
+ var len1 = WASM_VECTOR_LEN;
484
+ getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);
485
+ getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);
486
+ };
463
487
  imports.wbg.__wbg___wbindgen_throw_dd24417ed36fc46e = function(arg0, arg1) {
464
488
  throw new Error(getStringFromWasm0(arg0, arg1));
465
489
  };
490
+ imports.wbg.__wbg_get_6b7bd52aca3f9671 = function(arg0, arg1) {
491
+ const ret = arg0[arg1 >>> 0];
492
+ return ret;
493
+ };
494
+ imports.wbg.__wbg_length_d45040a40c570362 = function(arg0) {
495
+ const ret = arg0.length;
496
+ return ret;
497
+ };
466
498
  imports.wbg.__wbindgen_init_externref_table = function() {
467
499
  const table = wasm.__wbindgen_externrefs;
468
500
  const offset = table.grow(4);
@@ -479,6 +511,7 @@ function __wbg_get_imports() {
479
511
  function __wbg_finalize_init(instance, module) {
480
512
  wasm = instance.exports;
481
513
  __wbg_init.__wbindgen_wasm_module = module;
514
+ cachedDataViewMemory0 = null;
482
515
  cachedUint32ArrayMemory0 = null;
483
516
  cachedUint8ArrayMemory0 = null;
484
517
 
Binary file
@@ -2,10 +2,10 @@
2
2
  /* eslint-disable */
3
3
  export const memory: WebAssembly.Memory;
4
4
  export const __wbg_chunker_free: (a: number, b: number) => void;
5
- export const chunk_offsets: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number];
5
+ export const chunk_offsets: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => [number, number];
6
6
  export const chunk_offsets_pattern: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number];
7
7
  export const chunker_collect_offsets: (a: number) => [number, number];
8
- export const chunker_new: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => number;
8
+ export const chunker_new: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => number;
9
9
  export const chunker_next: (a: number) => [number, number];
10
10
  export const chunker_reset: (a: number) => void;
11
11
  export const chunker_with_pattern: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => number;
@@ -14,8 +14,9 @@ export const default_target_size: () => number;
14
14
  export const find_merge_indices: (a: number, b: number, c: number) => [number, number];
15
15
  export const merge_splits: (a: number, b: number, c: number, d: number) => [number, number];
16
16
  export const split_offsets: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
17
- export const __wbindgen_externrefs: WebAssembly.Table;
18
17
  export const __wbindgen_malloc: (a: number, b: number) => number;
19
18
  export const __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
19
+ export const __wbindgen_externrefs: WebAssembly.Table;
20
20
  export const __wbindgen_free: (a: number, b: number, c: number) => void;
21
+ export const __externref_table_alloc: () => number;
21
22
  export const __wbindgen_start: () => void;
package/pkg/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "chonkiejs-chunk",
3
3
  "type": "module",
4
- "version": "0.10.0",
4
+ "version": "0.10.1",
5
5
  "license": "MIT OR Apache-2.0",
6
6
  "files": [
7
7
  "chonkiejs_chunk_bg.wasm",