@jackens/nnn 2026.9.1 → 2026.9.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.
Files changed (4) hide show
  1. package/nnn.d.ts +209 -366
  2. package/nnn.js +10 -31
  3. package/package.json +1 -1
  4. package/readme.md +562 -527
package/nnn.d.ts CHANGED
@@ -1,78 +1,101 @@
1
1
  /**
2
- * A helper for building simple tokenizers
3
- * (see also {@link nanolightTs}).
4
- *
5
- * @param decorator
6
- *
7
- * A function that wraps each matched chunk.
8
- * It receives the matched text (`chunk`)
9
- * and optionally the `metadata`
10
- * associated with the pattern that produced the match.
11
- * For unmatched text between patterns,
12
- * `metadata` is `undefined`.
13
- *
14
- * @param specs
15
- *
16
- * An array of tuples `[metadata, pattern]` where:
17
- * - `metadata`: arbitrary data (e.g., a CSS class name)
18
- * passed to `decorator` when the pattern matches.
19
- * - `pattern`: a `string` or `RegExp`
20
- * to match against the input.
2
+ * Represents a CSS rule node for the {@link c} helper. Keys
3
+ * are CSS properties or nested selectors.
4
+ */
5
+ export type CNode = {
6
+ [attributeOrSelector: string]: string | number | CNode | undefined;
7
+ };
8
+ /**
9
+ * A minimal CSS-in-JS helper that converts a JavaScript
10
+ * object hierarchy into a CSS string.
11
+ *
12
+ * @param node An object describing CSS rules. Keys are
13
+ * selectors or at-rules; values are either CSS property
14
+ * values or nested rule objects. A selector key may
15
+ * contain comma-separated alternatives (e.g. `'.b,.c'`);
16
+ * when nested, each alternative is combined with each
17
+ * parent alternative (cartesian product), producing a
18
+ * comma-joined selector list (e.g. `'a.b,a.c'`).
19
+ * @param splitter A delimiter used to create unique keys
20
+ * (default: `'$$'`). The substring from `splitter` to the
21
+ * end of a key is ignored (e.g., `src$$1` → `src`).
22
+ *
23
+ * @returns A CSS string representing the compiled rules.
24
+ */
25
+ export declare const c: (node: CNode, splitter?: string) => string;
26
+ /**
27
+ * Creates a tag function for escaping interpolated values
28
+ * in template literals.
21
29
  *
22
- * @returns
30
+ * @param escapeFn A function that takes a value and returns
31
+ * its escaped string representation.
23
32
  *
24
- * A tokenizer function that accepts a code string
25
- * and returns an array of decorated tokens.
33
+ * @returns A tag function that escapes interpolated values
34
+ * using the provided escape function.
35
+ */
36
+ export declare const createEscape: (escapeFn: (value: any) => string) => (template: TemplateStringsArray, ...values: unknown[]) => string;
37
+ /**
38
+ * A helper for building simple tokenizers (see also
39
+ * {@link nanolightTs}).
26
40
  *
27
41
  * @remarks
28
42
  *
29
- * 1. Matches starting at an earlier position
30
- * take precedence.
31
- * 2. Among matches at the same position,
32
- * the longer one wins.
33
- * 3. Among matches of the same position and length,
34
- * the one defined earlier wins.
43
+ * 1. Matches starting at an earlier position take
44
+ * precedence.
45
+ * 2. Among matches at the same position, the longer one
46
+ * wins.
47
+ * 3. Among matches of the same position and length, the one
48
+ * defined earlier wins.
49
+ *
50
+ * @param decorator A function that wraps each matched
51
+ * chunk. It receives the matched text (`chunk`) and
52
+ * optionally the `metadata` associated with the pattern
53
+ * that produced the match. For unmatched text between
54
+ * patterns, `metadata` is `undefined`.
55
+ * @param specs An array of tuples `[metadata, pattern]`
56
+ * where:
57
+ *
58
+ * - `metadata`: arbitrary data (e.g., a CSS class name)
59
+ * passed to `decorator` when the pattern matches.
60
+ * - `pattern`: a `string` or `RegExp` to match against the
61
+ * input.
62
+ *
63
+ * @returns A tokenizer function that accepts a code string
64
+ * and returns an array of decorated tokens.
35
65
  */
36
66
  export declare const createTokenizer: <M, T>(decorator: (chunk: string, metadata?: M) => T, ...specs: [M, string | RegExp][]) => (code: string) => T[];
37
67
  /**
38
- * Parses a CSV string
39
- * into a two-dimensional array of strings.
68
+ * Parses a CSV string into a two-dimensional array of
69
+ * strings.
40
70
  *
41
71
  * Supports quoted fields with escaped double quotes (`""`).
42
72
  * Carriage returns are normalized.
43
73
  *
44
- * @param csv
45
- *
46
- * The CSV string to parse.
47
- *
48
- * @param separator
49
- *
50
- * The field delimiter (default: `','`).
74
+ * @param csv The CSV string to parse.
75
+ * @param separator The field delimiter (default: `','`).
51
76
  *
52
- * @returns
53
- *
54
- * A 2D array where each inner array
55
- * represents a row of fields.
77
+ * @returns A 2D array where each inner array represents a
78
+ * row of fields.
56
79
  */
57
80
  export declare const csvParse: (csv: string, separator?: string) => string[][];
58
81
  /**
59
- * Applies Polish-specific typographic corrections
60
- * to a DOM subtree.
82
+ * Applies Polish-specific typographic corrections to a DOM
83
+ * subtree.
61
84
  *
62
85
  * This function prevents orphaned conjunctions
63
86
  * (single-letter words like “a”, “i”, “o”, “u”, “w”, “z”)
64
- * from appearing at the end of a line
65
- * by wrapping them with the following word
66
- * in a non-breaking span.
67
- * It also inserts zero-width spaces
68
- * after slashes and dots to allow line breaks.
69
- *
70
- * @param node
71
- *
72
- * The root DOM node to process.
73
- * All descendant text nodes are corrected recursively,
74
- * except those inside `IFRAME`, `NOSCRIPT`, `PRE`,
75
- * `SCRIPT`, `STYLE`, or `TEXTAREA` elements.
87
+ * and the em dash (“—”) from appearing at the end of a
88
+ * line. It wraps each such character together with the
89
+ * whitespace that follows it in a `white-space:nowrap`
90
+ * span, removing the only line-break opportunity between it
91
+ * and the next word so the two stay glued together. It also
92
+ * inserts zero-width spaces after slashes and dots to allow
93
+ * line breaks.
94
+ *
95
+ * @param node The root DOM node to process. All descendant
96
+ * text nodes are corrected recursively, except those
97
+ * inside `IFRAME`, `NOSCRIPT`, `PRE`, `SCRIPT`, `STYLE`,
98
+ * or `TEXTAREA` elements.
76
99
  */
77
100
  export declare const fixPlTypography: (node: Node) => void;
78
101
  /**
@@ -86,33 +109,31 @@ export type HArgs1 = Record<PropertyKey, unknown> | null | undefined | Node | st
86
109
  */
87
110
  export type HArgs = [string | Node, ...HArgs1[]];
88
111
  /**
89
- * A lightweight *HyperScript*-style helper
90
- * for creating and modifying `HTMLElement`s
91
- * (see also {@link s}).
92
- *
93
- * @param tagOrNode
94
- *
95
- * If a `string`, it is treated as the tag name
96
- * for a new element.
97
- * If a `Node`, that node is modified in place.
98
- *
99
- * @param args
100
- *
101
- * Additional arguments processed as follows:
102
- * - `Object`: maps attributes/properties.
103
- * Keys starting with `$` set element properties
104
- * (without the `$` prefix);
105
- * other keys set attributes via `setAttribute`.
106
- * A value of `false` removes the attribute.
107
- * - `null`/`undefined`: ignored.
108
- * - `Node`: appended as a child.
109
- * - `string`/`number`: converted to a `Text` node
110
- * and appended.
111
- * - {@link HArgs} array: processed recursively.
112
- *
113
- * @returns
114
- *
115
- * The created or modified `HTMLElement`.
112
+ * A lightweight _HyperScript_-style helper for creating and
113
+ * modifying `HTMLElement`s (see also {@link s}).
114
+ *
115
+ * @param tagOrNode If a `string`, it is treated as the tag
116
+ * name for a new element. If a `Node`, that node is
117
+ * modified in place.
118
+ * @param args Additional arguments processed as follows:
119
+ *
120
+ * - `Object`: maps attributes/properties. Keys starting
121
+ * with `$` set element properties (without the `$`
122
+ * prefix); if the value is a plain object, it is
123
+ * shallow-merged into the existing property instead of
124
+ * replacing it (useful e.g. for `$style`). Other keys
125
+ * set attributes: a key prefixed with `xlink:` sets the
126
+ * attribute via `setAttributeNS` in the XLink
127
+ * namespace; any other key (without a colon) sets it
128
+ * via `setAttribute`. A value of `false` removes the
129
+ * attribute.
130
+ * - `null`/`undefined`: ignored.
131
+ * - `Node`: appended as a child.
132
+ * - `string`/`number`: converted to a `Text` node and
133
+ * appended.
134
+ * - {@link HArgs} array: processed recursively.
135
+ *
136
+ * @returns The created or modified `HTMLElement`.
116
137
  */
117
138
  export declare const h: {
118
139
  <T extends keyof HTMLElementTagNameMap>(tag: T, ...args1: HArgs1[]): HTMLElementTagNameMap[T];
@@ -120,33 +141,30 @@ export declare const h: {
120
141
  (tagOrNode: string | Node, ...args1: HArgs1[]): Node;
121
142
  };
122
143
  /**
123
- * A lightweight *HyperScript*-style helper
124
- * for creating and modifying `SVGElement`s
125
- * (see also {@link h}).
126
- *
127
- * @param tagOrNode
128
- *
129
- * If a `string`, it is treated as the tag name
130
- * for a new element.
131
- * If a `Node`, that node is modified in place.
132
- *
133
- * @param args
134
- *
135
- * Additional arguments processed as follows:
136
- * - `Object`: maps attributes/properties.
137
- * Keys starting with `$` set element properties
138
- * (without the `$` prefix);
139
- * other keys set attributes via `setAttributeNS`.
140
- * A value of `false` removes the attribute.
141
- * - `null`/`undefined`: ignored.
142
- * - `Node`: appended as a child.
143
- * - `string`/`number`: converted to a `Text` node
144
- * and appended.
145
- * - {@link HArgs} array: processed recursively.
146
- *
147
- * @returns
148
- *
149
- * The created or modified `SVGElement`.
144
+ * A lightweight _HyperScript_-style helper for creating and
145
+ * modifying `SVGElement`s (see also {@link h}).
146
+ *
147
+ * @param tagOrNode If a `string`, it is treated as the tag
148
+ * name for a new element. If a `Node`, that node is
149
+ * modified in place.
150
+ * @param args Additional arguments processed as follows:
151
+ *
152
+ * - `Object`: maps attributes/properties. Keys starting
153
+ * with `$` set element properties (without the `$`
154
+ * prefix); if the value is a plain object, it is
155
+ * shallow-merged into the existing property instead of
156
+ * replacing it. Other keys set attributes: a key
157
+ * prefixed with `xlink:` sets the attribute via
158
+ * `setAttributeNS` in the XLink namespace; any other
159
+ * key (without a colon) sets it via `setAttribute`. A
160
+ * value of `false` removes the attribute.
161
+ * - `null`/`undefined`: ignored.
162
+ * - `Node`: appended as a child.
163
+ * - `string`/`number`: converted to a `Text` node and
164
+ * appended.
165
+ * - {@link HArgs} array: processed recursively.
166
+ *
167
+ * @returns The created or modified `SVGElement`.
150
168
  */
151
169
  export declare const s: {
152
170
  <T extends keyof SVGElementTagNameMap>(tag: T, ...args1: HArgs1[]): SVGElementTagNameMap[T];
@@ -154,298 +172,123 @@ export declare const s: {
154
172
  (tagOrNode: string | Node, ...args1: HArgs1[]): Node;
155
173
  };
156
174
  /**
157
- * Shorthand for creating an SVG element
158
- * with a `<use>` child referencing an icon by ID.
175
+ * Shorthand for creating an SVG element with a `<use>`
176
+ * child referencing an icon by ID.
159
177
  *
160
178
  * Equivalent to:
161
- * `s('svg', ['use', { 'xlink:href': '#' + id }], ...args)`.
162
- *
163
- * @param id
164
179
  *
165
- * The ID of the symbol to reference
166
- * (without the `#` prefix).
180
+ * ```ts
181
+ * s(
182
+ * 'svg',
183
+ * ['use', { 'xlink:href': '#' + id }],
184
+ * ...args
185
+ * )
186
+ * ```
167
187
  *
168
- * @param args
188
+ * @param id The ID of the symbol to reference (without the
189
+ * `#` prefix).
190
+ * @param args Additional arguments passed to the outer
191
+ * `<svg>` element.
169
192
  *
170
- * Additional arguments passed to the outer `<svg>` element.
171
- *
172
- * @returns
173
- *
174
- * An `SVGSVGElement` containing a `<use>` element.
193
+ * @returns An `SVGSVGElement` containing a `<use>` element.
175
194
  */
176
195
  export declare const svgUse: (id: string, ...args: HArgs1[]) => SVGSVGElement;
177
196
  /**
178
- * Checks whether an object has the specified key
179
- * as its own property.
180
- *
181
- * A null-safe wrapper around `Object.hasOwn`.
182
- *
183
- * @param ref
184
- *
185
- * The object to check.
186
- *
187
- * @param key
188
- *
189
- * The property key to look for.
190
- *
191
- * @returns
192
- *
193
- * `true` if `ref` is not nullish
194
- * and has `key` as an own property, `false` otherwise.
195
- */
196
- export declare const hasOwn: (ref: unknown, key: unknown) => boolean;
197
- /**
198
- * Checks whether the argument is an array.
199
- *
200
- * @param arg
201
- *
202
- * The value to check.
203
- *
204
- * @returns
205
- *
206
- * `true` if `arg` is an array, `false` otherwise.
207
- */
208
- export declare const isArray: (arg: unknown) => arg is unknown[];
209
- /**
210
- * Checks whether the argument is of type `number`
211
- * (includes `NaN` and `±Infinity`).
212
- *
213
- * @param arg
214
- *
215
- * The value to check.
216
- *
217
- * @returns
218
- *
219
- * `true` if `typeof arg === 'number'`, `false` otherwise.
220
- */
221
- export declare const isNumber: (arg: unknown) => arg is number;
222
- /**
223
- * Checks whether the argument is a finite number
224
- * (excludes `±Infinity` and `NaN`).
225
- *
226
- * @param arg
227
- *
228
- * The value to check.
229
- *
230
- * @returns
231
- *
232
- * `true` if `arg` is a finite number, `false` otherwise.
233
- */
234
- export declare const isFiniteNumber: (arg: unknown) => arg is number;
235
- /**
236
- * Checks whether the argument is an integer number.
237
- *
238
- * @param arg
239
- *
240
- * The value to check.
241
- *
242
- * @returns
243
- *
244
- * `true` if `arg` is an integer number, `false` otherwise.
245
- */
246
- export declare const isInteger: (arg: unknown) => arg is number;
247
- /**
248
- * Checks whether the argument is a string.
249
- *
250
- * @param arg
251
- *
252
- * The value to check.
253
- *
254
- * @returns
255
- *
256
- * `true` if `typeof arg === 'string'`, `false` otherwise.
257
- */
258
- export declare const isString: (arg: unknown) => arg is string;
259
- /**
260
- * Checks whether the argument is a plain object
261
- * (not `null` and not an array).
262
- *
263
- * @param arg
264
- *
265
- * The value to check.
266
- *
267
- * @returns
268
- *
269
- * `true` if `arg` is a plain object, `false` otherwise.
270
- */
271
- export declare const isRecord: (arg: unknown) => arg is Record<PropertyKey, unknown>;
272
- /**
273
- * Parses JSON with support for
274
- * handler-based value transformation (“JavaScript ON”).
275
- *
276
- * Objects with exactly one property
277
- * whose key exists in `handlers`
278
- * and whose value is an array
279
- * are replaced by invoking the corresponding handler
280
- * with the array elements as arguments.
281
- *
282
- * @param handlers
283
- *
284
- * An object mapping handler names to functions.
285
- *
286
- * @param text
287
- *
288
- * The JSON string to parse.
289
- *
290
- * @returns
291
- *
292
- * The parsed value with handler substitutions applied.
293
- */
294
- export declare const jsOnParse: (handlers: Record<PropertyKey, Function>, text: string) => any;
295
- /**
296
- * A Monokai-inspired color scheme
297
- * for use with the {@link c} helper
298
- * and {@link nanolightTs} tokenizer.
197
+ * A Monokai-inspired color scheme for use with the {@link c}
198
+ * helper and {@link nanolightTs} tokenizer.
299
199
  */
300
200
  export declare const monokai: CNode;
301
201
  /**
302
202
  * A TypeScript/JavaScript syntax highlighting tokenizer
303
203
  * built using {@link createTokenizer}.
304
204
  *
305
- * @param code
205
+ * @param code The source code string to tokenize.
306
206
  *
307
- * The source code string to tokenize.
308
- *
309
- * @returns
310
- *
311
- * An array of {@link HArgs1} elements
312
- * suitable for rendering with {@link h}.
207
+ * @returns An array of {@link HArgs1} elements suitable for
208
+ * rendering with {@link h}.
313
209
  */
314
210
  export declare const nanolightTs: (code: string) => HArgs1[];
315
211
  /**
316
- * Creates a new object excluding the specified keys
317
- * from the source object.
318
- *
319
- * A runtime equivalent
320
- * of TypeScript’s `Omit<T, K>` utility type.
321
- * See also {@link pick}.
322
- *
323
- * @param ref
324
- *
325
- * The source object.
326
- *
327
- * @param keys
328
- *
329
- * An array of keys to exclude from the result.
330
- *
331
- * @returns
332
- *
333
- * A new object without the specified keys.
212
+ * A responsive web design helper that generates CSS rules
213
+ * for a grid-like layout.
214
+ *
215
+ * @param root The CSS root object to populate (see
216
+ * {@link c}).
217
+ * @param selector The CSS selector for the grid item.
218
+ * @param cellWidthPx The base cell width in pixels.
219
+ * @param cellHeightPx The base cell height in pixels.
220
+ * @param specs An array of breakpoint specifications, each
221
+ * a tuple of:
222
+ *
223
+ * - `maxWidth`: maximum number of cells per row (defines
224
+ * the viewport breakpoint).
225
+ * - `width` (optional, default `1`): number of horizontal
226
+ * cells the element spans.
227
+ * - `height` (optional, default `1`): number of vertical
228
+ * cells the element spans.
334
229
  */
335
- export declare const omit: <T, K extends keyof T>(ref: T, keys: unknown[]) => Omit<T, K>;
230
+ export declare const rwd: (root: CNode, selector: string, cellWidthPx: number, cellHeightPx: number, ...specs: [number, number?, number?][]) => void;
336
231
  /**
337
- * Creates a new object containing only the specified keys
338
- * from the source object.
339
- *
340
- * A runtime equivalent
341
- * of TypeScript’s `Pick<T, K>` utility type.
342
- * See also {@link omit}.
343
- *
344
- * @param ref
345
- *
346
- * The source object.
347
- *
348
- * @param keys
349
- *
350
- * An array of keys to include in the result.
232
+ * Generates a UUID v1 (time-based) identifier.
351
233
  *
352
- * @returns
234
+ * @param date The date to use for the timestamp portion
235
+ * (default: current date/time).
236
+ * @param node A hexadecimal `string` for the node portion
237
+ * (default: random). Must match `/^[0-9a-f]*$/`; it is
238
+ * trimmed to the last 12 characters and left-padded with
239
+ * zeros if shorter.
353
240
  *
354
- * A new object with only the specified keys.
241
+ * @returns A UUID v1 `string` in the standard format
242
+ * `xxxxxxxx-xxxx-1xxx-xxxx-xxxxxxxxxxxx`.
355
243
  */
356
- export declare const pick: <T, K extends keyof T>(ref: T, keys: unknown[]) => Pick<T, K>;
244
+ export declare const uuidV1: (date?: Date, node?: string) => string;
357
245
  /**
358
- * A responsive web design helper
359
- * that generates CSS rules for a grid-like layout.
360
- *
361
- * @param root
362
- *
363
- * The CSS root object to populate (see {@link c}).
364
- *
365
- * @param selector
366
- *
367
- * The CSS selector for the grid item.
246
+ * A Proxy-based helper for auto-vivification of nested
247
+ * object structures.
368
248
  *
369
- * @param cellWidthPx
249
+ * Accessing, assigning, or deleting any nested property on
250
+ * the returned proxy automatically creates intermediate
251
+ * objects (or arrays for numeric-string keys matching
252
+ * `^(0|[1-9]\d*)$`) as needed, allowing deep operations
253
+ * without explicit null checks.
370
254
  *
371
- * The base cell width in pixels.
255
+ * Intermediates of the last level in a get-only property
256
+ * chain are NOT auto-created. For example,
257
+ * `vivify(ref).one.two` will create `ref.one` as `{}`, but
258
+ * will NOT create `ref.one.two`. Only when a deeper access,
259
+ * assignment, or deletion occurs, e.g.
372
260
  *
373
- * @param cellHeightPx
261
+ * ```ts
262
+ * delete vivify(ref).one.two.three
263
+ * ```
374
264
  *
375
- * The base cell height in pixels.
265
+ * or
376
266
  *
377
- * @param specs
267
+ * ```ts
268
+ * vivify(ref).one.two.three = 4
269
+ * ```
378
270
  *
379
- * An array of breakpoint specifications, each a tuple of:
380
- * - `maxWidth`: maximum number of cells per row
381
- * (defines the viewport breakpoint).
382
- * - `width` (optional, default `1`):
383
- * number of horizontal cells the element spans.
384
- * - `height` (optional, default `1`):
385
- * number of vertical cells the element spans.
386
- */
387
- export declare const rwd: (root: CNode, selector: string, cellWidthPx: number, cellHeightPx: number, ...specs: [number, number?, number?][]) => void;
388
- /**
389
- * Generates a UUID v1 (time-based) identifier.
271
+ * Will `ref.one.two` be materialized.
390
272
  *
391
- * @param date
273
+ * When traversal reaches a primitive value, no
274
+ * auto-creation happens; the primitive’s own property is
275
+ * returned instead (e.g. accessing `.toString.name` on a
276
+ * number yields `'toString'` without modifying the
277
+ * underlying structure).
392
278
  *
393
- * The date to use for the timestamp portion
394
- * (default: current date/time).
279
+ * Deletion on a non-existing intermediate path will
280
+ * auto-create intermediates up to the parent of the deleted
281
+ * key, e.g.
395
282
  *
396
- * @param node
283
+ * ```ts
284
+ * delete vivify(ref).one.two.three
285
+ * ```
397
286
  *
398
- * A hexadecimal `string` for the node portion
399
- * (default: random).
400
- * Must match `/^[0-9a-f]*$/`;
401
- * it is trimmed to the last 12 characters
402
- * and left-padded with zeros if shorter.
287
+ * Will create `ref.one.two` as `{}` if it does not exist.
403
288
  *
404
- * @returns
289
+ * @param ref The root object to wrap.
405
290
  *
406
- * A UUID v1 `string` in the standard format
407
- * `xxxxxxxx-xxxx-1xxx-xxxx-xxxxxxxxxxxx`.
408
- */
409
- export declare const uuidV1: (date?: Date, node?: string) => string;
410
- /**
411
- * A Proxy-based helper for auto-vivification
412
- * of nested object structures.
413
- *
414
- * Accessing, assigning, or deleting any nested property
415
- * on the returned proxy
416
- * automatically creates intermediate objects
417
- * (or arrays for numeric-string keys matching
418
- * `^(0|[1-9]\d*)$`) as needed,
419
- * allowing deep operations without explicit null checks.
420
- *
421
- * Intermediates of the last level
422
- * in a get-only property chain are NOT auto-created.
423
- * For example, `vivify(ref).one.two` will create
424
- * `ref.one` as `{}`, but will NOT create `ref.one.two`.
425
- * Only when a deeper access, assignment, or deletion occurs
426
- * (e.g. `delete vivify(ref).one.two.three`
427
- * or `vivify(ref).one.two.three = 4`)
428
- * will `ref.one.two` be materialized.
429
- *
430
- * When traversal reaches a primitive value,
431
- * no auto-creation happens;
432
- * the primitive’s own property is returned instead
433
- * (e.g. accessing `.toString.name` on a number yields
434
- * `'toString'` without modifying the underlying structure).
435
- *
436
- * Deletion on a non-existing intermediate path
437
- * will auto-create intermediates up to the parent
438
- * of the deleted key
439
- * (e.g. `delete vivify(ref).one.two.three`
440
- * will create `ref.one.two` as `{}` if it does not exist).
441
- *
442
- * @param ref
443
- *
444
- * The root object to wrap.
445
- *
446
- * @returns
447
- *
448
- * A proxy that auto-creates nested objects/arrays
449
- * on property access.
291
+ * @returns A proxy that auto-creates nested objects/arrays
292
+ * on property access.
450
293
  */
451
294
  export declare const vivify: (ref: unknown) => any;