{
  "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.", "args": [{ "name": "length", "type": "number", "required": true }, { "name": "suffix", "type": "string", "default": "..." }], "example": "text | truncate:100:'…'", "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" }, { "name": "locale", "type": "string" }], "example": "price | number:2", "category": "number" },
    { "name": "currency", "description": "No.JS: Formats number as currency.", "args": [{ "name": "currency", "type": "string", "default": "USD" }, { "name": "locale", "type": "string" }], "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.", "args": [{ "name": "key", "type": "string", "required": true }, { "name": "direction", "type": "string", "default": "asc" }], "example": "users | sortBy:'age':'desc'", "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.", "args": [{ "name": "format", "type": "string" }], "example": "createdAt | date:'YYYY-MM-DD'", "category": "date" },
    { "name": "datetime", "description": "No.JS: Formats date with time.", "args": [{ "name": "format", "type": "string" }], "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", "required": true }], "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" }
  ]
}
