{
  "filters": [
    {
      "name": "uppercase",
      "description": "No.JS: Converts string to UPPERCASE.",
      "args": [],
      "example": "name | uppercase",
      "category": "string"
    },
    {
      "name": "lowercase",
      "description": "No.JS: Converts string to lowercase.",
      "args": [],
      "example": "name | lowercase",
      "category": "string"
    },
    {
      "name": "capitalize",
      "description": "No.JS: Capitalizes first letter of string.",
      "args": [],
      "example": "name | capitalize",
      "category": "string"
    },
    {
      "name": "truncate",
      "description": "No.JS: Truncates string to given length (default 100). Appends \"...\" when truncated.",
      "args": [
        {
          "name": "length",
          "type": "number",
          "default": 100
        }
      ],
      "example": "text | truncate:50",
      "category": "string"
    },
    {
      "name": "trim",
      "description": "No.JS: Removes leading and trailing whitespace.",
      "args": [],
      "example": "input | trim",
      "category": "string"
    },
    {
      "name": "stripHtml",
      "description": "No.JS: Strips HTML tags from string.",
      "args": [],
      "example": "content | stripHtml",
      "category": "string"
    },
    {
      "name": "slugify",
      "description": "No.JS: Converts string to URL-friendly slug.",
      "args": [],
      "example": "title | slugify",
      "category": "string"
    },
    {
      "name": "nl2br",
      "description": "No.JS: Converts newlines to `<br>` tags.",
      "args": [],
      "example": "text | nl2br",
      "category": "string"
    },
    {
      "name": "encodeUri",
      "description": "No.JS: Encodes string as URI component.",
      "args": [],
      "example": "query | encodeUri",
      "category": "string"
    },
    {
      "name": "number",
      "description": "No.JS: Formats number with locale formatting.",
      "args": [
        {
          "name": "decimals",
          "type": "number",
          "default": 0
        }
      ],
      "example": "price | number:2",
      "category": "number"
    },
    {
      "name": "currency",
      "description": "No.JS: Formats number as currency.",
      "args": [
        {
          "name": "currency",
          "type": "string",
          "default": "USD"
        }
      ],
      "example": "price | currency:'EUR'",
      "category": "number"
    },
    {
      "name": "percent",
      "description": "No.JS: Formats number as percentage.",
      "args": [
        {
          "name": "decimals",
          "type": "number"
        }
      ],
      "example": "ratio | percent:1",
      "category": "number"
    },
    {
      "name": "filesize",
      "description": "No.JS: Formats bytes as human-readable file size.",
      "args": [],
      "example": "bytes | filesize",
      "category": "number"
    },
    {
      "name": "ordinal",
      "description": "No.JS: Converts number to ordinal string (1st, 2nd, 3rd...).",
      "args": [],
      "example": "position | ordinal",
      "category": "number"
    },
    {
      "name": "count",
      "description": "No.JS: Returns length/count of array or string.",
      "args": [],
      "example": "items | count",
      "category": "collection"
    },
    {
      "name": "first",
      "description": "No.JS: Returns first element of array.",
      "args": [],
      "example": "items | first",
      "category": "collection"
    },
    {
      "name": "last",
      "description": "No.JS: Returns last element of array.",
      "args": [],
      "example": "items | last",
      "category": "collection"
    },
    {
      "name": "join",
      "description": "No.JS: Joins array elements into a string.",
      "args": [
        {
          "name": "separator",
          "type": "string",
          "default": ", "
        }
      ],
      "example": "tags | join:', '",
      "category": "collection"
    },
    {
      "name": "reverse",
      "description": "No.JS: Reverses array or string.",
      "args": [],
      "example": "items | reverse",
      "category": "collection"
    },
    {
      "name": "unique",
      "description": "No.JS: Returns unique values from array.",
      "args": [],
      "example": "items | unique",
      "category": "collection"
    },
    {
      "name": "pluck",
      "description": "No.JS: Extracts a property from each item in array.",
      "args": [
        {
          "name": "key",
          "type": "string",
          "required": true
        }
      ],
      "example": "users | pluck:'name'",
      "category": "collection"
    },
    {
      "name": "sortBy",
      "description": "No.JS: Sorts array by property. Prefix key with `-` for descending order (e.g. `sortBy:'-age'`).",
      "args": [
        {
          "name": "key",
          "type": "string",
          "required": true
        }
      ],
      "example": "users | sortBy:'age'",
      "category": "collection"
    },
    {
      "name": "where",
      "description": "No.JS: Filters array by property value.",
      "args": [
        {
          "name": "key",
          "type": "string",
          "required": true
        },
        {
          "name": "value",
          "type": "any",
          "required": true
        }
      ],
      "example": "users | where:'active':true",
      "category": "collection"
    },
    {
      "name": "date",
      "description": "No.JS: Formats date value using Intl.DateTimeFormat.",
      "args": [
        {
          "name": "fmt",
          "type": "string",
          "default": "short",
          "description": "Date style: short | long | full"
        }
      ],
      "example": "createdAt | date:'long'",
      "category": "date"
    },
    {
      "name": "datetime",
      "description": "No.JS: Formats date with time using locale default format.",
      "args": [],
      "example": "createdAt | datetime",
      "category": "date"
    },
    {
      "name": "relative",
      "description": "No.JS: Converts date to relative time string.",
      "args": [],
      "example": "createdAt | relative",
      "category": "date"
    },
    {
      "name": "fromNow",
      "description": "No.JS: Converts date to 'time from now' string.",
      "args": [],
      "example": "createdAt | fromNow",
      "category": "date"
    },
    {
      "name": "default",
      "description": "No.JS: Returns fallback value if input is null/undefined/empty.",
      "args": [
        {
          "name": "fallback",
          "type": "any",
          "default": ""
        }
      ],
      "example": "name | default:'Anonymous'",
      "category": "utility"
    },
    {
      "name": "json",
      "description": "No.JS: Converts value to JSON string.",
      "args": [
        {
          "name": "indent",
          "type": "number"
        }
      ],
      "example": "data | json:2",
      "category": "utility"
    },
    {
      "name": "debug",
      "description": "No.JS: Logs value to console and returns it.",
      "args": [],
      "example": "data | debug",
      "category": "utility"
    },
    {
      "name": "keys",
      "description": "No.JS: Returns object keys as array.",
      "args": [],
      "example": "obj | keys",
      "category": "utility"
    },
    {
      "name": "values",
      "description": "No.JS: Returns object values as array.",
      "args": [],
      "example": "obj | values",
      "category": "utility"
    }
  ]
}
