ngx-transforms 0.2.0 → 0.3.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.
@@ -262,6 +262,822 @@ declare class TruncatePipe implements PipeTransform {
262
262
  static ɵpipe: i0.ɵɵPipeDeclaration<TruncatePipe, "truncate", true>;
263
263
  }
264
264
 
265
+ /**
266
+ * TrimPipe: Removes whitespace (or specified characters) from both ends of a string.
267
+ *
268
+ * By default, trims whitespace. Pass a string of characters to trim those instead.
269
+ *
270
+ * @param {string} value - The string to trim.
271
+ * @param {string} [chars] - Optional set of characters to trim from both ends.
272
+ *
273
+ * @returns {string} - The trimmed string, or an empty string if input is invalid.
274
+ *
275
+ * @example
276
+ * {{ ' hello ' | trim }} // 'hello'
277
+ * {{ '--hello--' | trim:'-' }} // 'hello'
278
+ * {{ '***title***' | trim:'*' }} // 'title'
279
+ */
280
+ declare class TrimPipe implements PipeTransform {
281
+ transform(value: string, chars?: string): string;
282
+ static ɵfac: i0.ɵɵFactoryDeclaration<TrimPipe, never>;
283
+ static ɵpipe: i0.ɵɵPipeDeclaration<TrimPipe, "trim", true>;
284
+ }
285
+
286
+ /**
287
+ * CapitalizePipe: Uppercases the first character and lowercases the rest.
288
+ *
289
+ * Useful for normalizing headings, labels, and proper nouns.
290
+ * Differs from `upperFirst` which only uppercases the first character without
291
+ * altering the remaining characters.
292
+ *
293
+ * @param {string} value - The string to capitalize.
294
+ *
295
+ * @returns {string} - The capitalized string, or an empty string if input is invalid.
296
+ *
297
+ * @example
298
+ * {{ 'hello world' | capitalize }} // 'Hello world'
299
+ * {{ 'HELLO WORLD' | capitalize }} // 'Hello world'
300
+ * {{ 'hELLo' | capitalize }} // 'Hello'
301
+ */
302
+ declare class CapitalizePipe implements PipeTransform {
303
+ transform(value: string): string;
304
+ static ɵfac: i0.ɵɵFactoryDeclaration<CapitalizePipe, never>;
305
+ static ɵpipe: i0.ɵɵPipeDeclaration<CapitalizePipe, "capitalize", true>;
306
+ }
307
+
308
+ /**
309
+ * UpperFirstPipe: Uppercases the first character of a string without altering the rest.
310
+ *
311
+ * Differs from `capitalize` which also lowercases the remaining characters.
312
+ * Useful when you want to preserve acronyms, camelCase, or existing casing.
313
+ *
314
+ * @param {string} value - The string to transform.
315
+ *
316
+ * @returns {string} - The transformed string, or an empty string if input is invalid.
317
+ *
318
+ * @example
319
+ * {{ 'hello WORLD' | upperFirst }} // 'Hello WORLD'
320
+ * {{ 'javaScript' | upperFirst }} // 'JavaScript'
321
+ * {{ 'apiKey' | upperFirst }} // 'ApiKey'
322
+ */
323
+ declare class UpperFirstPipe implements PipeTransform {
324
+ transform(value: string): string;
325
+ static ɵfac: i0.ɵɵFactoryDeclaration<UpperFirstPipe, never>;
326
+ static ɵpipe: i0.ɵɵPipeDeclaration<UpperFirstPipe, "upperFirst", true>;
327
+ }
328
+
329
+ /**
330
+ * LeftPadPipe: Pads a string on the left until it reaches the target length.
331
+ *
332
+ * Wraps JavaScript's native `padStart`. If the input is already at or above
333
+ * the target length, returns it unchanged. Defaults to padding with spaces.
334
+ *
335
+ * @param {string | number} value - The string or number to pad.
336
+ * @param {number} length - The target length of the resulting string.
337
+ * @param {string} [char=' '] - The character (or string) to pad with.
338
+ *
339
+ * @returns {string} - The padded string, or empty string if input is invalid.
340
+ *
341
+ * @example
342
+ * {{ '5' | leftPad:3:'0' }} // '005'
343
+ * {{ 42 | leftPad:5 }} // ' 42'
344
+ * {{ 'hi' | leftPad:6:'-' }} // '----hi'
345
+ */
346
+ declare class LeftPadPipe implements PipeTransform {
347
+ transform(value: string | number, length: number, char?: string): string;
348
+ static ɵfac: i0.ɵɵFactoryDeclaration<LeftPadPipe, never>;
349
+ static ɵpipe: i0.ɵɵPipeDeclaration<LeftPadPipe, "leftPad", true>;
350
+ }
351
+
352
+ /**
353
+ * RightPadPipe: Pads a string on the right until it reaches the target length.
354
+ *
355
+ * Wraps JavaScript's native `padEnd`. If the input is already at or above
356
+ * the target length, returns it unchanged. Defaults to padding with spaces.
357
+ *
358
+ * @param {string | number} value - The string or number to pad.
359
+ * @param {number} length - The target length of the resulting string.
360
+ * @param {string} [char=' '] - The character (or string) to pad with.
361
+ *
362
+ * @returns {string} - The padded string, or empty string if input is invalid.
363
+ *
364
+ * @example
365
+ * {{ 'hi' | rightPad:5:'.' }} // 'hi...'
366
+ * {{ 'name' | rightPad:10 }} // 'name '
367
+ * {{ 42 | rightPad:5:'0' }} // '42000'
368
+ */
369
+ declare class RightPadPipe implements PipeTransform {
370
+ transform(value: string | number, length: number, char?: string): string;
371
+ static ɵfac: i0.ɵɵFactoryDeclaration<RightPadPipe, never>;
372
+ static ɵpipe: i0.ɵɵPipeDeclaration<RightPadPipe, "rightPad", true>;
373
+ }
374
+
375
+ /**
376
+ * PadPipe: Pads a string on both sides to reach the target length (centers it).
377
+ *
378
+ * When the padding is uneven, the extra character goes to the right.
379
+ * Defaults to padding with spaces.
380
+ *
381
+ * @param {string | number} value - The string or number to pad.
382
+ * @param {number} length - The target length of the resulting string.
383
+ * @param {string} [char=' '] - The character (or string) to pad with.
384
+ *
385
+ * @returns {string} - The padded string, or empty string if input is invalid.
386
+ *
387
+ * @example
388
+ * {{ 'x' | pad:5:'-' }} // '--x--'
389
+ * {{ 'hi' | pad:6:'*' }} // '**hi**'
390
+ * {{ 'hi' | pad:7:'*' }} // '**hi***' (extra right)
391
+ */
392
+ declare class PadPipe implements PipeTransform {
393
+ transform(value: string | number, length: number, char?: string): string;
394
+ static ɵfac: i0.ɵɵFactoryDeclaration<PadPipe, never>;
395
+ static ɵpipe: i0.ɵɵPipeDeclaration<PadPipe, "pad", true>;
396
+ }
397
+
398
+ /**
399
+ * RepeatPipe: Repeats a string a given number of times.
400
+ *
401
+ * Wraps `String.prototype.repeat`. Optional separator is inserted between repetitions.
402
+ *
403
+ * @param {string} value - The string to repeat.
404
+ * @param {number} count - Number of times to repeat (must be >= 0).
405
+ * @param {string} [separator=''] - Optional separator placed between repetitions.
406
+ *
407
+ * @returns {string} - The repeated string, or an empty string if input is invalid.
408
+ *
409
+ * @example
410
+ * {{ '-' | repeat:10 }} // '----------'
411
+ * {{ 'ha' | repeat:3 }} // 'hahaha'
412
+ * {{ 'item' | repeat:3:', ' }} // 'item, item, item'
413
+ */
414
+ declare class RepeatPipe implements PipeTransform {
415
+ transform(value: string, count: number, separator?: string): string;
416
+ static ɵfac: i0.ɵɵFactoryDeclaration<RepeatPipe, never>;
417
+ static ɵpipe: i0.ɵɵPipeDeclaration<RepeatPipe, "repeat", true>;
418
+ }
419
+
420
+ /**
421
+ * SlugifyPipe: Converts a string into a URL-friendly slug.
422
+ *
423
+ * Removes diacritics, lowercases, replaces non-alphanumerics with the separator,
424
+ * collapses consecutive separators, and trims them from the ends.
425
+ *
426
+ * @param {string} value - The string to slugify.
427
+ * @param {string} [separator='-'] - Character used to join words.
428
+ *
429
+ * @returns {string} - The slugified string, or an empty string if input is invalid.
430
+ *
431
+ * @example
432
+ * {{ 'Hello World!' | slugify }} // 'hello-world'
433
+ * {{ 'Café & Tea' | slugify }} // 'cafe-tea'
434
+ * {{ 'My Blog Post' | slugify:'_' }} // 'my_blog_post'
435
+ */
436
+ declare class SlugifyPipe implements PipeTransform {
437
+ transform(value: string, separator?: string): string;
438
+ static ɵfac: i0.ɵɵFactoryDeclaration<SlugifyPipe, never>;
439
+ static ɵpipe: i0.ɵɵPipeDeclaration<SlugifyPipe, "slugify", true>;
440
+ }
441
+
442
+ /**
443
+ * StripTagsPipe: Removes HTML tags from a string.
444
+ *
445
+ * By default strips every tag. Pass an array of allowed tag names to keep
446
+ * those specific tags while stripping the rest. HTML comments and DOCTYPEs
447
+ * are always removed.
448
+ *
449
+ * Note: this pipe returns a plain string — the caller is responsible for
450
+ * binding the output safely (e.g. via `[textContent]`). For sanitization
451
+ * that also neutralizes dangerous attributes/scripts, use HtmlSanitizePipe.
452
+ *
453
+ * @param {string} value - The HTML string to strip.
454
+ * @param {string[]} [allowedTags] - Optional list of tag names to preserve.
455
+ *
456
+ * @returns {string} - The stripped string, or empty string if input is invalid.
457
+ *
458
+ * @example
459
+ * {{ '<p>Hi <b>there</b></p>' | stripTags }} // 'Hi there'
460
+ * {{ '<p>Hi <b>bold</b></p>' | stripTags:['b'] }} // 'Hi <b>bold</b>'
461
+ * {{ '<script>alert(1)</script>Safe' | stripTags }} // 'Safe'
462
+ */
463
+ declare class StripTagsPipe implements PipeTransform {
464
+ transform(value: string, allowedTags?: string[]): string;
465
+ static ɵfac: i0.ɵɵFactoryDeclaration<StripTagsPipe, never>;
466
+ static ɵpipe: i0.ɵɵPipeDeclaration<StripTagsPipe, "stripTags", true>;
467
+ }
468
+
469
+ /**
470
+ * EncodeUriPipe: Encodes a full URI by escaping characters that would be invalid.
471
+ *
472
+ * Wraps the native `encodeURI`. Preserves URI structural characters
473
+ * (`: / ? # [ ] @ ! $ & ' ( ) * + , ; =`) so this is suitable for entire URLs,
474
+ * not for individual query string values (use `encodeURIComponent` for those).
475
+ *
476
+ * @param {string} value - The URI to encode.
477
+ *
478
+ * @returns {string} - The encoded URI, or empty string if input is invalid.
479
+ *
480
+ * @example
481
+ * {{ 'https://example.com/?q=hi world' | encodeURI }} // 'https://example.com/?q=hi%20world'
482
+ * {{ '/path with space.html' | encodeURI }} // '/path%20with%20space.html'
483
+ */
484
+ declare class EncodeUriPipe implements PipeTransform {
485
+ transform(value: string): string;
486
+ static ɵfac: i0.ɵɵFactoryDeclaration<EncodeUriPipe, never>;
487
+ static ɵpipe: i0.ɵɵPipeDeclaration<EncodeUriPipe, "encodeURI", true>;
488
+ }
489
+
490
+ /**
491
+ * EncodeUriComponentPipe: Encodes a single URI component, escaping reserved characters.
492
+ *
493
+ * Wraps the native `encodeURIComponent`. Encodes everything except
494
+ * `A-Z a-z 0-9 - _ . ! ~ * ' ( )`. Use this for query parameter values,
495
+ * path segments, or anywhere a value must not collide with URL syntax.
496
+ *
497
+ * @param {string} value - The URI component to encode.
498
+ *
499
+ * @returns {string} - The encoded component, or empty string if input is invalid.
500
+ *
501
+ * @example
502
+ * {{ 'hi world&you' | encodeURIComponent }} // 'hi%20world%26you'
503
+ * {{ 'foo/bar?baz=1' | encodeURIComponent }} // 'foo%2Fbar%3Fbaz%3D1'
504
+ */
505
+ declare class EncodeUriComponentPipe implements PipeTransform {
506
+ transform(value: string): string;
507
+ static ɵfac: i0.ɵɵFactoryDeclaration<EncodeUriComponentPipe, never>;
508
+ static ɵpipe: i0.ɵɵPipeDeclaration<EncodeUriComponentPipe, "encodeURIComponent", true>;
509
+ }
510
+
511
+ /**
512
+ * DecodeUriPipe: Decodes a URI previously encoded with `encodeURI`.
513
+ *
514
+ * Wraps the native `decodeURI`. Returns the input unchanged if the string
515
+ * contains a malformed escape sequence.
516
+ *
517
+ * @param {string} value - The encoded URI to decode.
518
+ *
519
+ * @returns {string} - The decoded URI, or empty string if input is invalid.
520
+ *
521
+ * @example
522
+ * {{ 'https://example.com/?q=hi%20world' | decodeURI }} // 'https://example.com/?q=hi world'
523
+ * {{ '/path%20with%20space.html' | decodeURI }} // '/path with space.html'
524
+ */
525
+ declare class DecodeUriPipe implements PipeTransform {
526
+ transform(value: string): string;
527
+ static ɵfac: i0.ɵɵFactoryDeclaration<DecodeUriPipe, never>;
528
+ static ɵpipe: i0.ɵɵPipeDeclaration<DecodeUriPipe, "decodeURI", true>;
529
+ }
530
+
531
+ /**
532
+ * DecodeUriComponentPipe: Decodes a URI component encoded with `encodeURIComponent`.
533
+ *
534
+ * Wraps the native `decodeURIComponent`. Returns the input unchanged if the
535
+ * string contains a malformed escape sequence.
536
+ *
537
+ * @param {string} value - The encoded URI component to decode.
538
+ *
539
+ * @returns {string} - The decoded component, or empty string if input is invalid.
540
+ *
541
+ * @example
542
+ * {{ 'hi%20world%26you' | decodeURIComponent }} // 'hi world&you'
543
+ * {{ 'foo%2Fbar%3Fbaz%3D1' | decodeURIComponent }} // 'foo/bar?baz=1'
544
+ */
545
+ declare class DecodeUriComponentPipe implements PipeTransform {
546
+ transform(value: string): string;
547
+ static ɵfac: i0.ɵɵFactoryDeclaration<DecodeUriComponentPipe, never>;
548
+ static ɵpipe: i0.ɵɵPipeDeclaration<DecodeUriComponentPipe, "decodeURIComponent", true>;
549
+ }
550
+
551
+ /**
552
+ * SplitPipe: Splits a string into an array using the given separator.
553
+ *
554
+ * Wraps `String.prototype.split`. Returns an empty array for invalid inputs.
555
+ *
556
+ * @param {string} value - The string to split.
557
+ * @param {string | RegExp} [separator=''] - Character, string, or regex to split on.
558
+ * An empty separator splits the string into individual characters.
559
+ * @param {number} [limit] - Optional maximum number of elements to return.
560
+ *
561
+ * @returns {string[]} - The resulting array, or an empty array for invalid input.
562
+ *
563
+ * @example
564
+ * {{ 'a,b,c' | split:',' }} // ['a', 'b', 'c']
565
+ * {{ 'abc' | split }} // ['a', 'b', 'c']
566
+ * {{ 'one two three' | split:' ':2 }} // ['one', 'two']
567
+ */
568
+ declare class SplitPipe implements PipeTransform {
569
+ transform(value: string, separator?: string | RegExp, limit?: number): string[];
570
+ static ɵfac: i0.ɵɵFactoryDeclaration<SplitPipe, never>;
571
+ static ɵpipe: i0.ɵɵPipeDeclaration<SplitPipe, "split", true>;
572
+ }
573
+
574
+ /**
575
+ * MatchPipe: Returns all regex matches found in a string.
576
+ *
577
+ * Wraps `String.prototype.match` with a global default. Returns an empty array
578
+ * when nothing matches or the regex is invalid.
579
+ *
580
+ * @param {string} value - The string to search.
581
+ * @param {string | RegExp} pattern - Pattern string (or RegExp) to match.
582
+ * @param {string} [flags='g'] - Regex flags used when `pattern` is a string.
583
+ *
584
+ * @returns {string[]} - Array of matches, or empty array if none / invalid input.
585
+ *
586
+ * @example
587
+ * {{ 'abc123def456' | match:'[0-9]+' }} // ['123', '456']
588
+ * {{ 'hello world' | match:'[a-z]+' }} // ['hello', 'world']
589
+ * {{ 'HELLO' | match:'[a-z]+':'gi' }} // ['HELLO']
590
+ */
591
+ declare class MatchPipe implements PipeTransform {
592
+ transform(value: string, pattern: string | RegExp, flags?: string): string[];
593
+ static ɵfac: i0.ɵɵFactoryDeclaration<MatchPipe, never>;
594
+ static ɵpipe: i0.ɵɵPipeDeclaration<MatchPipe, "match", true>;
595
+ }
596
+
597
+ /**
598
+ * TestPipe: Returns true when a string matches a regex pattern.
599
+ *
600
+ * Wraps `RegExp.prototype.test`. Returns false for invalid input or regex.
601
+ *
602
+ * @param {string} value - The string to test.
603
+ * @param {string | RegExp} pattern - Pattern string (or RegExp) to test against.
604
+ * @param {string} [flags=''] - Regex flags used when `pattern` is a string.
605
+ *
606
+ * @returns {boolean} - `true` if the pattern matches anywhere in the string.
607
+ *
608
+ * @example
609
+ * {{ 'abc@x.com' | test:'@' }} // true
610
+ * {{ 'ABC' | test:'[a-z]':'i' }} // true
611
+ * {{ '123' | test:'^[0-9]+$' }} // true
612
+ */
613
+ declare class TestPipe implements PipeTransform {
614
+ transform(value: string, pattern: string | RegExp, flags?: string): boolean;
615
+ static ɵfac: i0.ɵɵFactoryDeclaration<TestPipe, never>;
616
+ static ɵpipe: i0.ɵɵPipeDeclaration<TestPipe, "test", true>;
617
+ }
618
+
619
+ /**
620
+ * NewlinesPipe: Replaces line breaks in a string with a custom replacement.
621
+ *
622
+ * Handles all common line-break variants (`\n`, `\r\n`, `\r`). Defaults to
623
+ * `<br>` for HTML display via `[innerHTML]`. Pass any string to customize.
624
+ *
625
+ * @param {string} value - The string containing line breaks.
626
+ * @param {string} [replacement='<br>'] - String inserted in place of each line break.
627
+ *
628
+ * @returns {string} - The transformed string, or empty string if input is invalid.
629
+ *
630
+ * @example
631
+ * {{ text | newlines }} // 'a<br>b<br>c' (use [innerHTML])
632
+ * {{ text | newlines:' | ' }} // 'a | b | c'
633
+ * {{ text | newlines:' ' }} // 'a b c' (flatten to single line)
634
+ */
635
+ declare class NewlinesPipe implements PipeTransform {
636
+ transform(value: string, replacement?: string): string;
637
+ static ɵfac: i0.ɵɵFactoryDeclaration<NewlinesPipe, never>;
638
+ static ɵpipe: i0.ɵɵPipeDeclaration<NewlinesPipe, "newlines", true>;
639
+ }
640
+
641
+ /**
642
+ * TemplatePipe: Replaces `{key}` placeholders in a string with values from an object.
643
+ *
644
+ * Supports dot notation for nested keys. Missing keys are left as-is.
645
+ *
646
+ * @param {string} value - The template string containing placeholders like `{name}`.
647
+ * @param {Record<string, unknown>} [values={}] - Map of keys to replacement values.
648
+ *
649
+ * @returns {string} - The interpolated string, or empty string if input is invalid.
650
+ *
651
+ * @example
652
+ * {{ 'Hello {name}!' | template:{name:'Alice'} }} // 'Hello Alice!'
653
+ * {{ '{user.name} is {user.age}' | template:{user:{name:'Bob',age:30}} }} // 'Bob is 30'
654
+ * {{ 'Hi {missing}!' | template:{name:'Alice'} }} // 'Hi {missing}!'
655
+ */
656
+ declare class TemplatePipe implements PipeTransform {
657
+ transform(value: string, values?: Record<string, unknown>): string;
658
+ private getNestedValue;
659
+ static ɵfac: i0.ɵɵFactoryDeclaration<TemplatePipe, never>;
660
+ static ɵpipe: i0.ɵɵPipeDeclaration<TemplatePipe, "template", true>;
661
+ }
662
+
663
+ /**
664
+ * LatinizePipe: Strips diacritics (accents) from a string while preserving
665
+ * casing, spaces, and punctuation.
666
+ *
667
+ * Uses Unicode NFD normalization to split combining marks from base letters,
668
+ * then removes the combining mark range (U+0300–U+036F). Unlike `slugify`,
669
+ * this pipe leaves the string structure intact — it only removes accents.
670
+ *
671
+ * @param {string} value - The string to latinize.
672
+ *
673
+ * @returns {string} - The latinized string, or empty string if input is invalid.
674
+ *
675
+ * @example
676
+ * {{ 'Café' | latinize }} // 'Cafe'
677
+ * {{ 'naïve résumé' | latinize }} // 'naive resume'
678
+ * {{ 'Crème Brûlée' | latinize }} // 'Creme Brulee'
679
+ */
680
+ declare class LatinizePipe implements PipeTransform {
681
+ transform(value: string): string;
682
+ static ɵfac: i0.ɵɵFactoryDeclaration<LatinizePipe, never>;
683
+ static ɵpipe: i0.ɵɵPipeDeclaration<LatinizePipe, "latinize", true>;
684
+ }
685
+
686
+ /**
687
+ * WrapPipe: Surrounds a string with a prefix and optional suffix.
688
+ *
689
+ * When no suffix is provided, the prefix is used on both sides.
690
+ *
691
+ * @param {string} value - The string to wrap.
692
+ * @param {string} [prefix=''] - Text to place before the value.
693
+ * @param {string} [suffix] - Text to place after the value (defaults to prefix).
694
+ *
695
+ * @returns {string} - The wrapped string, or empty string if input is invalid.
696
+ *
697
+ * @example
698
+ * {{ 'value' | wrap:'[':']' }} // '[value]'
699
+ * {{ 'bold' | wrap:'**' }} // '**bold**'
700
+ * {{ 'tag' | wrap:'<':'>' }} // '<tag>'
701
+ */
702
+ declare class WrapPipe implements PipeTransform {
703
+ transform(value: string, prefix?: string, suffix?: string): string;
704
+ static ɵfac: i0.ɵɵFactoryDeclaration<WrapPipe, never>;
705
+ static ɵpipe: i0.ɵɵPipeDeclaration<WrapPipe, "wrap", true>;
706
+ }
707
+
708
+ /**
709
+ * KeysPipe: Returns the own enumerable property names of an object as an array.
710
+ *
711
+ * Wraps `Object.keys`. Works on plain objects and arrays. Returns an empty array
712
+ * for null, undefined, or primitive inputs.
713
+ *
714
+ * @param {unknown} value - The object whose keys to extract.
715
+ *
716
+ * @returns {string[]} - Array of property names, or an empty array if invalid input.
717
+ *
718
+ * @example
719
+ * {{ { a: 1, b: 2, c: 3 } | keys }} // ['a', 'b', 'c']
720
+ * {{ user | keys }} // ['name', 'age', 'email']
721
+ * @for (key of obj | keys; track key) { ... }
722
+ */
723
+ declare class KeysPipe implements PipeTransform {
724
+ transform(value: unknown): string[];
725
+ static ɵfac: i0.ɵɵFactoryDeclaration<KeysPipe, never>;
726
+ static ɵpipe: i0.ɵɵPipeDeclaration<KeysPipe, "keys", true>;
727
+ }
728
+
729
+ /**
730
+ * ValuesPipe: Returns the own enumerable property values of an object as an array.
731
+ *
732
+ * Wraps `Object.values`. Works on plain objects and arrays. Returns an empty array
733
+ * for null, undefined, or primitive inputs.
734
+ *
735
+ * @param {unknown} value - The object whose values to extract.
736
+ *
737
+ * @returns {unknown[]} - Array of property values, or an empty array if invalid input.
738
+ *
739
+ * @example
740
+ * {{ { a: 1, b: 2, c: 3 } | values }} // [1, 2, 3]
741
+ * {{ user | values }} // ['Alice', 30, 'a@b.com']
742
+ * @for (val of obj | values; track $index) { ... }
743
+ */
744
+ declare class ValuesPipe implements PipeTransform {
745
+ transform(value: unknown): unknown[];
746
+ static ɵfac: i0.ɵɵFactoryDeclaration<ValuesPipe, never>;
747
+ static ɵpipe: i0.ɵɵPipeDeclaration<ValuesPipe, "values", true>;
748
+ }
749
+
750
+ /**
751
+ * PairsPipe: Returns the own enumerable properties of an object as an array of
752
+ * [key, value] tuples.
753
+ *
754
+ * Wraps `Object.entries`. Works on plain objects and arrays. Returns an empty
755
+ * array for null, undefined, or primitive inputs.
756
+ *
757
+ * @param {unknown} value - The object to convert into key/value pairs.
758
+ *
759
+ * @returns {[string, unknown][]} - Array of [key, value] tuples, or empty array.
760
+ *
761
+ * @example
762
+ * {{ { a: 1, b: 2 } | pairs }} // [['a', 1], ['b', 2]]
763
+ * @for (entry of user | pairs; track entry[0]) {
764
+ * <li>{{ entry[0] }}: {{ entry[1] }}</li>
765
+ * }
766
+ */
767
+ declare class PairsPipe implements PipeTransform {
768
+ transform(value: unknown): [string, unknown][];
769
+ static ɵfac: i0.ɵɵFactoryDeclaration<PairsPipe, never>;
770
+ static ɵpipe: i0.ɵɵPipeDeclaration<PairsPipe, "pairs", true>;
771
+ }
772
+
773
+ /**
774
+ * PickPipe: Returns a new object containing only the specified keys.
775
+ *
776
+ * Non-existent keys are skipped silently. Returns an empty object for null,
777
+ * undefined, or primitive inputs. Does not mutate the input.
778
+ *
779
+ * @param {unknown} value - The source object.
780
+ * @param {string[] | string} keys - Key (or array of keys) to keep.
781
+ *
782
+ * @returns {Record<string, unknown>} - A new object with only the picked keys.
783
+ *
784
+ * @example
785
+ * {{ user | pick:['name', 'email'] }} // { name: 'Alice', email: 'a@b.com' }
786
+ * {{ obj | pick:'id' }} // { id: 42 }
787
+ */
788
+ declare class PickPipe implements PipeTransform {
789
+ transform(value: unknown, keys: string[] | string): Record<string, unknown>;
790
+ static ɵfac: i0.ɵɵFactoryDeclaration<PickPipe, never>;
791
+ static ɵpipe: i0.ɵɵPipeDeclaration<PickPipe, "pick", true>;
792
+ }
793
+
794
+ /**
795
+ * OmitPipe: Returns a new object with the specified keys removed.
796
+ *
797
+ * Keys that don't exist on the source are ignored. Returns an empty object
798
+ * for null, undefined, or primitive inputs. Does not mutate the input.
799
+ *
800
+ * @param {unknown} value - The source object.
801
+ * @param {string[] | string} keys - Key (or array of keys) to remove.
802
+ *
803
+ * @returns {Record<string, unknown>} - A new object without the omitted keys.
804
+ *
805
+ * @example
806
+ * {{ user | omit:['password'] }} // user without password
807
+ * {{ obj | omit:['internal', '_id'] }} // public-safe view
808
+ */
809
+ declare class OmitPipe implements PipeTransform {
810
+ transform(value: unknown, keys: string[] | string): Record<string, unknown>;
811
+ static ɵfac: i0.ɵɵFactoryDeclaration<OmitPipe, never>;
812
+ static ɵpipe: i0.ɵɵPipeDeclaration<OmitPipe, "omit", true>;
813
+ }
814
+
815
+ /**
816
+ * InvertPipe: Returns a new object with keys and values swapped.
817
+ *
818
+ * Values are coerced to strings to become valid keys. When two source keys
819
+ * share a value, the **last one wins** (use `invertBy` if you need to keep
820
+ * every collision as an array). Returns an empty object for null, undefined,
821
+ * or primitive inputs. Does not mutate the input.
822
+ *
823
+ * @param {unknown} value - The source object.
824
+ *
825
+ * @returns {Record<string, string>} - A new object with keys/values swapped.
826
+ *
827
+ * @example
828
+ * {{ { a: 1, b: 2 } | invert }} // { '1': 'a', '2': 'b' }
829
+ * {{ { en: 'hello', fr: 'bonjour' } | invert }} // { hello: 'en', bonjour: 'fr' }
830
+ * {{ { a: 1, b: 1 } | invert }} // { '1': 'b' } (last wins)
831
+ */
832
+ declare class InvertPipe implements PipeTransform {
833
+ transform(value: unknown): Record<string, string>;
834
+ static ɵfac: i0.ɵɵFactoryDeclaration<InvertPipe, never>;
835
+ static ɵpipe: i0.ɵɵPipeDeclaration<InvertPipe, "invert", true>;
836
+ }
837
+
838
+ /**
839
+ * InvertByPipe: Returns a new object with values as keys, grouping the original
840
+ * keys for each value into an array.
841
+ *
842
+ * Unlike `invert`, no data is lost when multiple source keys share a value —
843
+ * they're collected into an array under the shared key.
844
+ *
845
+ * @param {unknown} value - The source object.
846
+ *
847
+ * @returns {Record<string, string[]>} - A new object with values-as-keys
848
+ * pointing at arrays of the original keys.
849
+ *
850
+ * @example
851
+ * {{ { a: 1, b: 2, c: 1 } | invertBy }} // { '1': ['a', 'c'], '2': ['b'] }
852
+ * {{ { alice: 'admin', bob: 'user', carol: 'admin' } | invertBy }}
853
+ * // { admin: ['alice', 'carol'], user: ['bob'] }
854
+ */
855
+ declare class InvertByPipe implements PipeTransform {
856
+ transform(value: unknown): Record<string, string[]>;
857
+ static ɵfac: i0.ɵɵFactoryDeclaration<InvertByPipe, never>;
858
+ static ɵpipe: i0.ɵɵPipeDeclaration<InvertByPipe, "invertBy", true>;
859
+ }
860
+
861
+ /**
862
+ * DiffObjPipe: Returns the slice of `value` whose properties differ from `compareTo`.
863
+ *
864
+ * For each key in `value`, the entry is included in the result when:
865
+ * - The key is missing from `compareTo`, or
866
+ * - `value[key]` is not strictly equal (`!==`) to `compareTo[key]`.
867
+ *
868
+ * Comparison is shallow — nested objects/arrays are compared by reference.
869
+ *
870
+ * @param {unknown} value - The source object.
871
+ * @param {unknown} compareTo - The object to compare against.
872
+ *
873
+ * @returns {Record<string, unknown>} - A new object containing the differing entries.
874
+ *
875
+ * @example
876
+ * {{ { a: 1, b: 2 } | diffObj:{ a: 1, b: 99 } }} // { b: 2 }
877
+ * {{ { a: 1, b: 2, c: 3 } | diffObj:{ a: 1 } }} // { b: 2, c: 3 }
878
+ * {{ { a: 1 } | diffObj:{ a: 1 } }} // {} (no differences)
879
+ */
880
+ declare class DiffObjPipe implements PipeTransform {
881
+ transform(value: unknown, compareTo: unknown): Record<string, unknown>;
882
+ static ɵfac: i0.ɵɵFactoryDeclaration<DiffObjPipe, never>;
883
+ static ɵpipe: i0.ɵɵPipeDeclaration<DiffObjPipe, "diffObj", true>;
884
+ }
885
+
886
+ /**
887
+ * IsDefinedPipe: Returns `true` when the value is neither `null` nor `undefined`.
888
+ *
889
+ * Useful for guarding optional bindings in templates without resorting to
890
+ * verbose `value !== null && value !== undefined` checks. Empty strings,
891
+ * `0`, and `false` are all considered defined.
892
+ *
893
+ * @param {unknown} value - The value to test.
894
+ *
895
+ * @returns {boolean} - `true` if defined, `false` if null/undefined.
896
+ *
897
+ * @example
898
+ * {{ user | isDefined }} // true when user is set
899
+ * {{ 0 | isDefined }} // true
900
+ * {{ '' | isDefined }} // true
901
+ * {{ null | isDefined }} // false
902
+ * {{ undefined | isDefined }} // false
903
+ */
904
+ declare class IsDefinedPipe implements PipeTransform {
905
+ transform(value: unknown): boolean;
906
+ static ɵfac: i0.ɵɵFactoryDeclaration<IsDefinedPipe, never>;
907
+ static ɵpipe: i0.ɵɵPipeDeclaration<IsDefinedPipe, "isDefined", true>;
908
+ }
909
+
910
+ /**
911
+ * IsNullPipe: Returns `true` only when the value is exactly `null`.
912
+ *
913
+ * Strict check — `undefined` returns `false`. Use `isDefined` (with `!`) if
914
+ * you want to catch both null and undefined together.
915
+ *
916
+ * @param {unknown} value - The value to test.
917
+ *
918
+ * @returns {boolean} - `true` if the value is null, `false` otherwise.
919
+ *
920
+ * @example
921
+ * {{ null | isNull }} // true
922
+ * {{ undefined | isNull }} // false
923
+ * {{ 0 | isNull }} // false
924
+ * {{ '' | isNull }} // false
925
+ */
926
+ declare class IsNullPipe implements PipeTransform {
927
+ transform(value: unknown): boolean;
928
+ static ɵfac: i0.ɵɵFactoryDeclaration<IsNullPipe, never>;
929
+ static ɵpipe: i0.ɵɵPipeDeclaration<IsNullPipe, "isNull", true>;
930
+ }
931
+
932
+ /**
933
+ * IsStringPipe: Returns `true` when the value is a primitive string.
934
+ *
935
+ * Uses `typeof value === 'string'` — boxed `String` objects (rare) are not
936
+ * matched. Useful for polymorphic templates that render values from JSON,
937
+ * dynamic forms, or `unknown`-typed data.
938
+ *
939
+ * @param {unknown} value - The value to test.
940
+ *
941
+ * @returns {boolean} - `true` if the value is a string primitive, `false` otherwise.
942
+ *
943
+ * @example
944
+ * {{ 'hello' | isString }} // true
945
+ * {{ '' | isString }} // true
946
+ * {{ 42 | isString }} // false
947
+ * {{ null | isString }} // false
948
+ */
949
+ declare class IsStringPipe implements PipeTransform {
950
+ transform(value: unknown): boolean;
951
+ static ɵfac: i0.ɵɵFactoryDeclaration<IsStringPipe, never>;
952
+ static ɵpipe: i0.ɵɵPipeDeclaration<IsStringPipe, "isString", true>;
953
+ }
954
+
955
+ /**
956
+ * IsNumberPipe: Returns `true` when the value is a primitive number.
957
+ *
958
+ * Uses `typeof value === 'number'`. By design `NaN` returns `true` because
959
+ * its type is `number` — if you need a finite-only check, follow up with
960
+ * `Number.isFinite`. Numeric strings (e.g. `'42'`) return `false`.
961
+ *
962
+ * @param {unknown} value - The value to test.
963
+ *
964
+ * @returns {boolean} - `true` if the value is a number primitive, `false` otherwise.
965
+ *
966
+ * @example
967
+ * {{ 42 | isNumber }} // true
968
+ * {{ 0 | isNumber }} // true
969
+ * {{ NaN | isNumber }} // true
970
+ * {{ '42' | isNumber }} // false
971
+ * {{ null | isNumber }} // false
972
+ */
973
+ declare class IsNumberPipe implements PipeTransform {
974
+ transform(value: unknown): boolean;
975
+ static ɵfac: i0.ɵɵFactoryDeclaration<IsNumberPipe, never>;
976
+ static ɵpipe: i0.ɵɵPipeDeclaration<IsNumberPipe, "isNumber", true>;
977
+ }
978
+
979
+ /**
980
+ * IsArrayPipe: Returns `true` when the value is an Array.
981
+ *
982
+ * Backed by `Array.isArray`, so array-likes (NodeList, HTMLCollection,
983
+ * arguments, typed arrays) all return `false`. Use it to discriminate between
984
+ * structural and scalar inputs in polymorphic templates.
985
+ *
986
+ * @param {unknown} value - The value to test.
987
+ *
988
+ * @returns {boolean} - `true` if the value is an array, `false` otherwise.
989
+ *
990
+ * @example
991
+ * {{ [1, 2, 3] | isArray }} // true
992
+ * {{ [] | isArray }} // true
993
+ * {{ 'abc' | isArray }} // false
994
+ * {{ { length: 0 } | isArray }} // false
995
+ */
996
+ declare class IsArrayPipe implements PipeTransform {
997
+ transform(value: unknown): boolean;
998
+ static ɵfac: i0.ɵɵFactoryDeclaration<IsArrayPipe, never>;
999
+ static ɵpipe: i0.ɵɵPipeDeclaration<IsArrayPipe, "isArray", true>;
1000
+ }
1001
+
1002
+ /**
1003
+ * IsObjectPipe: Returns `true` when the value is a non-null object that is
1004
+ * not an array.
1005
+ *
1006
+ * Lenient — class instances, Date, Map, Set, and RegExp all return `true`
1007
+ * because their JS type is "object". Only `null` and arrays are excluded.
1008
+ * Pair with `isArray` to discriminate between the two structural shapes.
1009
+ *
1010
+ * @param {unknown} value - The value to test.
1011
+ *
1012
+ * @returns {boolean} - `true` if the value is a non-null, non-array object.
1013
+ *
1014
+ * @example
1015
+ * {{ { a: 1 } | isObject }} // true
1016
+ * {{ {} | isObject }} // true
1017
+ * {{ [1, 2] | isObject }} // false
1018
+ * {{ null | isObject }} // false
1019
+ * {{ 'abc' | isObject }} // false
1020
+ */
1021
+ declare class IsObjectPipe implements PipeTransform {
1022
+ transform(value: unknown): boolean;
1023
+ static ɵfac: i0.ɵɵFactoryDeclaration<IsObjectPipe, never>;
1024
+ static ɵpipe: i0.ɵɵPipeDeclaration<IsObjectPipe, "isObject", true>;
1025
+ }
1026
+
1027
+ /**
1028
+ * IsFunctionPipe: Returns `true` when the value is callable.
1029
+ *
1030
+ * Backed by `typeof value === 'function'`, so arrow functions, regular
1031
+ * functions, async functions, generator functions, and class constructors
1032
+ * all return `true`. Methods and bound functions count too.
1033
+ *
1034
+ * @param {unknown} value - The value to test.
1035
+ *
1036
+ * @returns {boolean} - `true` if the value is a function, `false` otherwise.
1037
+ *
1038
+ * @example
1039
+ * {{ (() => 0) | isFunction }} // true
1040
+ * {{ Math.max | isFunction }} // true
1041
+ * {{ class {} | isFunction }} // true
1042
+ * {{ 'fn' | isFunction }} // false
1043
+ */
1044
+ declare class IsFunctionPipe implements PipeTransform {
1045
+ transform(value: unknown): boolean;
1046
+ static ɵfac: i0.ɵɵFactoryDeclaration<IsFunctionPipe, never>;
1047
+ static ɵpipe: i0.ɵɵPipeDeclaration<IsFunctionPipe, "isFunction", true>;
1048
+ }
1049
+
1050
+ /**
1051
+ * IsEmptyPipe: Returns `true` when the value has nothing in it.
1052
+ *
1053
+ * - `null` / `undefined` → `true`
1054
+ * - `''` (empty string) → `true`
1055
+ * - `[]` (empty array) → `true`
1056
+ * - `{}` (no own enumerable keys) → `true`
1057
+ * - empty `Map` / `Set` → `true`
1058
+ * - everything else (numbers, booleans, dates, functions, non-empty containers) → `false`
1059
+ *
1060
+ * Whitespace strings count as non-empty — chain `trim` first if you want a
1061
+ * "blank" check.
1062
+ *
1063
+ * @param {unknown} value - The value to test.
1064
+ *
1065
+ * @returns {boolean} - `true` if the value is considered empty.
1066
+ *
1067
+ * @example
1068
+ * {{ '' | isEmpty }} // true
1069
+ * {{ [] | isEmpty }} // true
1070
+ * {{ {} | isEmpty }} // true
1071
+ * {{ null | isEmpty }} // true
1072
+ * {{ ' ' | isEmpty }} // false (use trim first)
1073
+ * {{ 0 | isEmpty }} // false
1074
+ */
1075
+ declare class IsEmptyPipe implements PipeTransform {
1076
+ transform(value: unknown): boolean;
1077
+ static ɵfac: i0.ɵɵFactoryDeclaration<IsEmptyPipe, never>;
1078
+ static ɵpipe: i0.ɵɵPipeDeclaration<IsEmptyPipe, "isEmpty", true>;
1079
+ }
1080
+
265
1081
  /**
266
1082
  * CreditCardMaskPipe: Masks all but the last four digits of a string, optionally controlled by a boolean flag.
267
1083
  * By default, masking is applied.
@@ -1048,7 +1864,289 @@ declare class FilterByPipe implements PipeTransform {
1048
1864
  static ɵpipe: i0.ɵɵPipeDeclaration<FilterByPipe, "filterBy", true>;
1049
1865
  }
1050
1866
 
1867
+ /**
1868
+ * MinPipe: Returns the minimum value from an array of numbers or objects.
1869
+ *
1870
+ * Supports primitive number arrays and object arrays by property key with dot notation.
1871
+ *
1872
+ * @param {unknown[]} value - The array to evaluate.
1873
+ * @param {string} [key] - Optional property path for object comparison (supports dot notation).
1874
+ *
1875
+ * @returns {number | undefined} - The minimum value, or undefined if the array is empty/invalid.
1876
+ *
1877
+ * @example
1878
+ * {{ [5, 3, 8, 1, 9] | min }} // 1
1879
+ * {{ products | min:'price' }} // cheapest price
1880
+ * {{ orders | min:'meta.total' }} // lowest order total
1881
+ */
1882
+ declare class MinPipe implements PipeTransform {
1883
+ transform(value: unknown[], key?: string): number | undefined;
1884
+ private getNestedValue;
1885
+ static ɵfac: i0.ɵɵFactoryDeclaration<MinPipe, never>;
1886
+ static ɵpipe: i0.ɵɵPipeDeclaration<MinPipe, "min", true>;
1887
+ }
1888
+
1889
+ /**
1890
+ * MaxPipe: Returns the maximum value from an array of numbers or objects.
1891
+ *
1892
+ * Supports primitive number arrays and object arrays by property key with dot notation.
1893
+ *
1894
+ * @param {unknown[]} value - The array to evaluate.
1895
+ * @param {string} [key] - Optional property path for object comparison (supports dot notation).
1896
+ *
1897
+ * @returns {number | undefined} - The maximum value, or undefined if the array is empty/invalid.
1898
+ *
1899
+ * @example
1900
+ * {{ [5, 3, 8, 1, 9] | max }} // 9
1901
+ * {{ products | max:'price' }} // highest price
1902
+ * {{ orders | max:'meta.total' }} // largest order total
1903
+ */
1904
+ declare class MaxPipe implements PipeTransform {
1905
+ transform(value: unknown[], key?: string): number | undefined;
1906
+ private getNestedValue;
1907
+ static ɵfac: i0.ɵɵFactoryDeclaration<MaxPipe, never>;
1908
+ static ɵpipe: i0.ɵɵPipeDeclaration<MaxPipe, "max", true>;
1909
+ }
1910
+
1911
+ /**
1912
+ * SumPipe: Returns the sum of all numeric values in an array.
1913
+ *
1914
+ * Supports primitive number arrays and object arrays by property key with dot notation.
1915
+ *
1916
+ * @param {unknown[]} value - The array to evaluate.
1917
+ * @param {string} [key] - Optional property path for object summation (supports dot notation).
1918
+ *
1919
+ * @returns {number | undefined} - The total, or undefined if the array is empty/invalid.
1920
+ *
1921
+ * @example
1922
+ * {{ [10, 20, 30] | sum }} // 60
1923
+ * {{ items | sum:'price' }} // total price
1924
+ * {{ orders | sum:'meta.total' }} // grand total
1925
+ */
1926
+ declare class SumPipe implements PipeTransform {
1927
+ transform(value: unknown[], key?: string): number | undefined;
1928
+ private getNestedValue;
1929
+ static ɵfac: i0.ɵɵFactoryDeclaration<SumPipe, never>;
1930
+ static ɵpipe: i0.ɵɵPipeDeclaration<SumPipe, "sum", true>;
1931
+ }
1932
+
1933
+ /**
1934
+ * AveragePipe: Returns the arithmetic mean of all numeric values in an array.
1935
+ *
1936
+ * Supports primitive number arrays and object arrays by property key with dot notation.
1937
+ *
1938
+ * @param {unknown[]} value - The array to evaluate.
1939
+ * @param {string} [key] - Optional property path for object averaging (supports dot notation).
1940
+ *
1941
+ * @returns {number | undefined} - The average, or undefined if the array is empty/invalid.
1942
+ *
1943
+ * @example
1944
+ * {{ [10, 20, 30] | average }} // 20
1945
+ * {{ students | average:'grade' }} // average grade
1946
+ * {{ reviews | average:'meta.rating' }} // average rating
1947
+ */
1948
+ declare class AveragePipe implements PipeTransform {
1949
+ transform(value: unknown[], key?: string): number | undefined;
1950
+ private getNestedValue;
1951
+ static ɵfac: i0.ɵɵFactoryDeclaration<AveragePipe, never>;
1952
+ static ɵpipe: i0.ɵɵPipeDeclaration<AveragePipe, "average", true>;
1953
+ }
1954
+
1955
+ /**
1956
+ * PercentagePipe: Calculates what percentage a value represents of a total.
1957
+ *
1958
+ * Returns `(value / total) * 100`, optionally rounded to a given number of decimal places.
1959
+ *
1960
+ * @param {number} value - The partial value.
1961
+ * @param {number} total - The total/whole value.
1962
+ * @param {number} [decimals] - Optional number of decimal places to round to.
1963
+ *
1964
+ * @returns {number | undefined} - The percentage, or undefined if inputs are invalid.
1965
+ *
1966
+ * @example
1967
+ * {{ 25 | percentage:200 }} // 12.5
1968
+ * {{ 1 | percentage:3:2 }} // 33.33
1969
+ * {{ 750 | percentage:1000 }} // 75
1970
+ */
1971
+ declare class PercentagePipe implements PipeTransform {
1972
+ transform(value: number, total: number, decimals?: number): number | undefined;
1973
+ static ɵfac: i0.ɵɵFactoryDeclaration<PercentagePipe, never>;
1974
+ static ɵpipe: i0.ɵɵPipeDeclaration<PercentagePipe, "percentage", true>;
1975
+ }
1976
+
1977
+ /**
1978
+ * CeilPipe: Rounds a number up to the specified number of decimal places.
1979
+ *
1980
+ * Uses `Math.ceil` — always rounds toward positive infinity.
1981
+ *
1982
+ * @param {number} value - The number to round up.
1983
+ * @param {number} [precision=0] - Number of decimal places to preserve (defaults to 0 = integer).
1984
+ *
1985
+ * @returns {number | undefined} - The rounded-up value, or undefined if the input is invalid.
1986
+ *
1987
+ * @example
1988
+ * {{ 4.1 | ceil }} // 5
1989
+ * {{ 4.123 | ceil:2 }} // 4.13
1990
+ * {{ 0.001 | ceil:2 }} // 0.01
1991
+ * {{ -4.9 | ceil }} // -4
1992
+ */
1993
+ declare class CeilPipe implements PipeTransform {
1994
+ transform(value: number, precision?: number): number | undefined;
1995
+ static ɵfac: i0.ɵɵFactoryDeclaration<CeilPipe, never>;
1996
+ static ɵpipe: i0.ɵɵPipeDeclaration<CeilPipe, "ceil", true>;
1997
+ }
1998
+
1999
+ /**
2000
+ * FloorPipe: Rounds a number down to the specified number of decimal places.
2001
+ *
2002
+ * Uses `Math.floor` — always rounds toward negative infinity.
2003
+ *
2004
+ * @param {number} value - The number to round down.
2005
+ * @param {number} [precision=0] - Number of decimal places to preserve (defaults to 0 = integer).
2006
+ *
2007
+ * @returns {number | undefined} - The rounded-down value, or undefined if the input is invalid.
2008
+ *
2009
+ * @example
2010
+ * {{ 4.9 | floor }} // 4
2011
+ * {{ 4.567 | floor:2 }} // 4.56
2012
+ * {{ 0.999 | floor:1 }} // 0.9
2013
+ * {{ -4.1 | floor }} // -5
2014
+ */
2015
+ declare class FloorPipe implements PipeTransform {
2016
+ transform(value: number, precision?: number): number | undefined;
2017
+ static ɵfac: i0.ɵɵFactoryDeclaration<FloorPipe, never>;
2018
+ static ɵpipe: i0.ɵɵPipeDeclaration<FloorPipe, "floor", true>;
2019
+ }
2020
+
2021
+ /**
2022
+ * RoundPipe: Rounds a number to the nearest value at the specified number of decimal places.
2023
+ *
2024
+ * Uses `Math.round` — rounds half-up (e.g. 2.5 → 3, -2.5 → -2).
2025
+ *
2026
+ * @param {number} value - The number to round.
2027
+ * @param {number} [precision=0] - Number of decimal places to preserve (defaults to 0 = integer).
2028
+ *
2029
+ * @returns {number | undefined} - The rounded value, or undefined if the input is invalid.
2030
+ *
2031
+ * @example
2032
+ * {{ 4.4 | round }} // 4
2033
+ * {{ 4.5 | round }} // 5
2034
+ * {{ 4.567 | round:2 }} // 4.57
2035
+ * {{ 0.125 | round:2 }} // 0.13
2036
+ */
2037
+ declare class RoundPipe implements PipeTransform {
2038
+ transform(value: number, precision?: number): number | undefined;
2039
+ static ɵfac: i0.ɵɵFactoryDeclaration<RoundPipe, never>;
2040
+ static ɵpipe: i0.ɵɵPipeDeclaration<RoundPipe, "round", true>;
2041
+ }
2042
+
2043
+ /**
2044
+ * SqrtPipe: Returns the square root of a number.
2045
+ *
2046
+ * Uses `Math.sqrt`. Returns undefined for negative numbers.
2047
+ *
2048
+ * @param {number} value - The number to compute the square root of.
2049
+ *
2050
+ * @returns {number | undefined} - The square root, or undefined if the input is invalid or negative.
2051
+ *
2052
+ * @example
2053
+ * {{ 9 | sqrt }} // 3
2054
+ * {{ 2 | sqrt }} // 1.4142135623730951
2055
+ * {{ 144 | sqrt }} // 12
2056
+ */
2057
+ declare class SqrtPipe implements PipeTransform {
2058
+ transform(value: number): number | undefined;
2059
+ static ɵfac: i0.ɵɵFactoryDeclaration<SqrtPipe, never>;
2060
+ static ɵpipe: i0.ɵɵPipeDeclaration<SqrtPipe, "sqrt", true>;
2061
+ }
2062
+
2063
+ /**
2064
+ * PowPipe: Raises a number to the specified power.
2065
+ *
2066
+ * Uses `Math.pow`. The exponent defaults to 2 (squaring).
2067
+ *
2068
+ * @param {number} value - The base number.
2069
+ * @param {number} [exponent=2] - The power to raise the base to (defaults to 2).
2070
+ *
2071
+ * @returns {number | undefined} - The result, or undefined if the inputs are invalid.
2072
+ *
2073
+ * @example
2074
+ * {{ 3 | pow }} // 9 (3^2)
2075
+ * {{ 2 | pow:3 }} // 8 (2^3)
2076
+ * {{ 5 | pow:0 }} // 1 (anything^0)
2077
+ */
2078
+ declare class PowPipe implements PipeTransform {
2079
+ transform(value: number, exponent?: number): number | undefined;
2080
+ static ɵfac: i0.ɵɵFactoryDeclaration<PowPipe, never>;
2081
+ static ɵpipe: i0.ɵɵPipeDeclaration<PowPipe, "pow", true>;
2082
+ }
2083
+
2084
+ /**
2085
+ * DegreesPipe: Converts a value in radians to degrees.
2086
+ *
2087
+ * Formula: `degrees = radians * (180 / Math.PI)`
2088
+ *
2089
+ * @param {number} value - The angle in radians.
2090
+ *
2091
+ * @returns {number | undefined} - The angle in degrees, or undefined if the input is invalid.
2092
+ *
2093
+ * @example
2094
+ * {{ 3.14159 | degrees }} // ~180
2095
+ * {{ 1.5708 | degrees }} // ~90
2096
+ * {{ 0 | degrees }} // 0
2097
+ */
2098
+ declare class DegreesPipe implements PipeTransform {
2099
+ transform(value: number): number | undefined;
2100
+ static ɵfac: i0.ɵɵFactoryDeclaration<DegreesPipe, never>;
2101
+ static ɵpipe: i0.ɵɵPipeDeclaration<DegreesPipe, "degrees", true>;
2102
+ }
2103
+
2104
+ /**
2105
+ * BytesPipe: Formats a number of bytes into a human-readable string with appropriate units.
2106
+ *
2107
+ * Supports both binary (1024-based: KiB, MiB, GiB) and decimal (1000-based: KB, MB, GB) units.
2108
+ * Defaults to decimal (1000-based) units.
2109
+ *
2110
+ * @param {number} value - The number of bytes.
2111
+ * @param {number} [decimals=1] - Number of decimal places in the output.
2112
+ * @param {string} [base='decimal'] - Unit base: 'decimal' (1000, KB/MB/GB) or 'binary' (1024, KiB/MiB/GiB).
2113
+ *
2114
+ * @returns {string | undefined} - The formatted string, or undefined if the input is invalid.
2115
+ *
2116
+ * @example
2117
+ * {{ 1536 | bytes }} // "1.5 KB"
2118
+ * {{ 1048576 | bytes:2 }} // "1.05 MB"
2119
+ * {{ 1073741824 | bytes:1:'binary' }} // "1.0 GiB"
2120
+ */
2121
+ declare class BytesPipe implements PipeTransform {
2122
+ private readonly decimalUnits;
2123
+ private readonly binaryUnits;
2124
+ transform(value: number, decimals?: number, base?: 'decimal' | 'binary'): string | undefined;
2125
+ static ɵfac: i0.ɵɵFactoryDeclaration<BytesPipe, never>;
2126
+ static ɵpipe: i0.ɵɵPipeDeclaration<BytesPipe, "bytes", true>;
2127
+ }
2128
+
2129
+ /**
2130
+ * RadiansPipe: Converts a value in degrees to radians.
2131
+ *
2132
+ * Formula: `radians = degrees * (Math.PI / 180)`
2133
+ *
2134
+ * @param {number} value - The angle in degrees.
2135
+ *
2136
+ * @returns {number | undefined} - The angle in radians, or undefined if the input is invalid.
2137
+ *
2138
+ * @example
2139
+ * {{ 180 | radians }} // ~3.14159
2140
+ * {{ 90 | radians }} // ~1.5708
2141
+ * {{ 0 | radians }} // 0
2142
+ */
2143
+ declare class RadiansPipe implements PipeTransform {
2144
+ transform(value: number): number | undefined;
2145
+ static ɵfac: i0.ɵɵFactoryDeclaration<RadiansPipe, never>;
2146
+ static ɵpipe: i0.ɵɵPipeDeclaration<RadiansPipe, "radians", true>;
2147
+ }
2148
+
1051
2149
  declare const ALL_PIPES: Provider[];
1052
2150
 
1053
- export { ALL_PIPES, AsciiArtPipe, BarcodePipe, CamelCasePipe, ChunkPipe, ColorConvertPipe, CountPipe, CreditCardMaskPipe, DeviceTypePipe, DiffPipe, EmailMaskPipe, EveryPipe, FilterByPipe, Flatten, GravatarPipe, GroupByPipe, HighlightPipe, HtmlEscapePipe, HtmlSanitizePipe, InitialPipe, InitialsPipe, IntersectionPipe, IpAddressMaskPipe, JsonPrettyPipe, KebabCasePipe, MorseCodePipe, OrderByPipe, PluckPipe, QrCodePipe, RangePipe, ReplacePipe, ReversePipe, SamplePipe, ShufflePipe, SnakeCasePipe, SomePipe, TailPipe, TextToSpeechPipe, TimeAgoPipePipe, TitleCasePipe, TruncatePipe, TruthifyPipe, UnionPipe, UniquePipe, WithoutPipe };
2151
+ export { ALL_PIPES, AsciiArtPipe, AveragePipe, BarcodePipe, BytesPipe, CamelCasePipe, CapitalizePipe, CeilPipe, ChunkPipe, ColorConvertPipe, CountPipe, CreditCardMaskPipe, DecodeUriComponentPipe, DecodeUriPipe, DegreesPipe, DeviceTypePipe, DiffObjPipe, DiffPipe, EmailMaskPipe, EncodeUriComponentPipe, EncodeUriPipe, EveryPipe, FilterByPipe, Flatten, FloorPipe, GravatarPipe, GroupByPipe, HighlightPipe, HtmlEscapePipe, HtmlSanitizePipe, InitialPipe, InitialsPipe, IntersectionPipe, InvertByPipe, InvertPipe, IpAddressMaskPipe, IsArrayPipe, IsDefinedPipe, IsEmptyPipe, IsFunctionPipe, IsNullPipe, IsNumberPipe, IsObjectPipe, IsStringPipe, JsonPrettyPipe, KebabCasePipe, KeysPipe, LatinizePipe, LeftPadPipe, MatchPipe, MaxPipe, MinPipe, MorseCodePipe, NewlinesPipe, OmitPipe, OrderByPipe, PadPipe, PairsPipe, PercentagePipe, PickPipe, PluckPipe, PowPipe, QrCodePipe, RadiansPipe, RangePipe, RepeatPipe, ReplacePipe, ReversePipe, RightPadPipe, RoundPipe, SamplePipe, ShufflePipe, SlugifyPipe, SnakeCasePipe, SomePipe, SplitPipe, SqrtPipe, StripTagsPipe, SumPipe, TailPipe, TemplatePipe, TestPipe, TextToSpeechPipe, TimeAgoPipePipe, TitleCasePipe, TrimPipe, TruncatePipe, TruthifyPipe, UnionPipe, UniquePipe, UpperFirstPipe, ValuesPipe, WithoutPipe, WrapPipe };
1054
2152
  export type { AsciiArtOptions, BarcodeElementType, BarcodeFormat, BarcodeOptions, ColorTargetType, DeviceType, QrCodeOptions };