{"id":13808420,"url":"https://github.com/nglrx/pipes","last_synced_at":"2025-05-14T02:31:52.592Z","repository":{"id":38989354,"uuid":"247319266","full_name":"nglrx/pipes","owner":"nglrx","description":"A library of useful pipes for Angular apps","archived":false,"fork":false,"pushed_at":"2024-01-10T20:23:14.000Z","size":2208,"stargazers_count":15,"open_issues_count":5,"forks_count":6,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-11-07T19:43:59.963Z","etag":null,"topics":["angular","angular-filters","angular-library","angular-pipes","filters","javascript","library","ng","ngx","pipes","typescript"],"latest_commit_sha":null,"homepage":"https://nglrx.github.io/pipes/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nglrx.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-03-14T17:10:28.000Z","updated_at":"2024-10-30T14:21:40.000Z","dependencies_parsed_at":"2024-08-04T01:09:01.337Z","dependency_job_id":"64d6692d-8ea0-4cdc-8f4b-6b76849f2413","html_url":"https://github.com/nglrx/pipes","commit_stats":{"total_commits":211,"total_committers":1,"mean_commits":211.0,"dds":0.0,"last_synced_commit":"d18532a636a10060405adeba608818f9b5ef0aa1"},"previous_names":[],"tags_count":25,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nglrx%2Fpipes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nglrx%2Fpipes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nglrx%2Fpipes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nglrx%2Fpipes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nglrx","download_url":"https://codeload.github.com/nglrx/pipes/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225148941,"owners_count":17428429,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["angular","angular-filters","angular-library","angular-pipes","filters","javascript","library","ng","ngx","pipes","typescript"],"created_at":"2024-08-04T01:01:42.350Z","updated_at":"2024-11-19T00:30:45.854Z","avatar_url":"https://github.com/nglrx.png","language":"TypeScript","readme":"![npm](https://img.shields.io/npm/v/@nglrx/pipes?label=npm)\n![GitHub last commit](https://img.shields.io/github/last-commit/nglrx/pipes)\n![Libraries.io dependency status for latest release, scoped npm package](https://img.shields.io/librariesio/release/npm/@nglrx/pipes)\n[![Build Status](https://travis-ci.org/nglrx/pipes.svg?branch=master)](https://travis-ci.org/nglrx/pipes)\n[![codecov](https://codecov.io/gh/nglrx/pipes/branch/master/graph/badge.svg)](https://codecov.io/gh/nglrx/pipes)\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=nglrx_pipes\u0026metric=alert_status)](https://sonarcloud.io/dashboard?id=nglrx_pipes)\n![npm](https://img.shields.io/npm/dm/@nglrx/pipes)\n![GitHub](https://img.shields.io/github/license/nglrx/pipes?color=blue)\n\n# @nglrx/pipes\n\nA library of pipes for Angular apps.\n\n## Installation\n\nUse [npm](https://www.npmjs.com/) to install @nglrx/pipes.\n\n```bash\nnpm i @nglrx/pipes\n```\n\n## Import Module\n\nImport module `NglrxPipesModule` to your module for using all pipes.\n\n```typescript\nimport { NglrxPipesModule } from '@nglrx/pipes';\n\n@NgModule({\n  //...\n  imports: [\n    NglrxPipesModule\n  ]\n})\nexport class YourModule { }\n```\n\nAlternatively, you can use pipes from specific module(s) like `NglrxNumberPipesModule` or `NglrxStringPipesModule`.\n\n## Usage of Pipes\n\nPipes can be used in your component's *template*\n\n```html\n{{ 'This-is-a-string' | length }}\n\u003c!-- Returns 16 --\u003e\n```\n\nThey can also be *chained*\n\n```html\n{{ '  Another-string  ' | trim | length }}\n\u003c!-- Returns 14 --\u003e\n```\n\nOr they can be used within *components* or *services* by calling the `transform` method\n\n```typescript\nimport { LengthPipe } from '@nglrx/pipes';\n\n@Component({\n  providers: [ LengthPipe ]\n})\nexport class YourComponent {\n  \n  constructor(private lengthPipe: LengthPipe) {\n    this.lengthPipe.transform('Yet-another-string'); // Returns 18\n  }\n}\n```\n\n\n## Library of Pipes\n\n- [String Pipes](#string-pipes)\n  - [camelCase](#camelcase)\n  - [charAt](#charat)\n  - [concat](#concat)\n  - [interpolate](#interpolate)\n  - [lowerCase](#lowercase)\n  - [padEnd](#padend)\n  - [padStart](#padstart)\n  - [pascalCase](#pascalcase)\n  - [repeat](#repeat)\n  - [sentenceCase](#sentencecase)\n  - [slugify](#slugify)\n  - [split](#split)\n  - [titleCase](#titlecase)\n  - [trim](#trim)\n  - [trimLeft](#trimleft)\n  - [trimRight](#trimright)\n  - [truncate](#truncate)\n  - [upperCase](#uppercase)\n- [Number Pipes](#number-pipes)\n  - [abs](#abs)\n  - [avg](#avg)\n  - [ceil](#ceil)\n  - [floor](#floor)\n  - [max](#max)\n  - [min](#min)\n  - [pct](#pct)\n  - [pow](#pow)\n  - [round](#round)\n  - [sqrt](#sqrt)\n  - [sum](#sum)\n- [Array Pipes](#array-pipes)\n  - [combine](#combine)\n  - [copyWithin](#copywithin)\n  - [every](#every)\n  - [fill](#fill)\n  - [first](#first)\n  - [join](#join)\n  - [last](#last)\n  - [map](#map)\n  - [some](#some)\n- [Generic Pipes](#generic-pipes)\n  - [length](#length)\n  - [reverse](#reverse)\n  - [typeOf](#typeof)\n\n\n## String Pipes\n\nA collection of pipes exported by `NglrxStringPipesModule`.\n\n\n### camelCase\n\nConverts a string to camel case and strips hyphens, underscores and whitespaces.\n\nUsage: `string | camelCase`\n\n```html\n{{ 'Convert_to camel-case' | camelCase }}\n\u003c!-- Returns 'convertToCamelCase' --\u003e\n```\n\n\n### charAt\n\nReturns the character value at given position in a string.\n\nUsage: `string | charAt [ : position ]`\n\nRange of position is from 0 (default) to n-1, where n is length of the string.\n\n```html\n{{ 'This is a sample string.' | charAt: 12 }}\n\u003c!-- Returns 'm' --\u003e\n```\n\n\n### concat\n\nConcatenates one or more string(s) to current string at the end.\n\nUsage: `string | concat: string1 [ : string2 ] ...`\n\n```html\n{{ 'This' | concat: ' is': ' a': ' string': '!' }}\n\u003c!-- Returns 'This is a string!' --\u003e\n```\n\n\n### interpolate\n\nReplaces marked up parameters surrounded by { and } delimiters in given string with target string values.\\\nThe indices of parameters start from 0 and increment by 1.\\\nThe target string values can be literals or variables and their position should match the index.\n\nUsage: `string | interpolate: string1 [ : string2 ] ...`\n\n```html\n{{ 'This {0} an {1} {2}!' | interpolate: 'is': 'interpolated': 'string' }}\n\u003c!-- Returns 'This is an interpolated string!' --\u003e\n```\n\n\n### lowerCase\n\nConverts a given string to lower case.\n\nUsage: `string | lowerCase`\n\n```html\n{{ 'Convert TO LoWeR-case' | lowerCase }}\n\u003c!-- Returns 'convert to lower-case' --\u003e\n```\n\n\n### padEnd\n\nPads the given string with a fill string so that the resulting string reaches the specified max length. The fill string is appended to the given string.\\\nDefault fill string is space `' '`.\n\nUsage: `string | padEnd: maxLength [ : fillString ]`\n\n```html\n{{ This is a test string! | padEnd: 29: '---' }}\n\u003c!-- Returns 'This is a test string!-------' --\u003e\n```\n\n\n### padStart\n\nPads the given string with a fill string so that the resulting string reaches the specified max length. The fill string is prepended to the given string.\\\nDefault fill string is space `' '`.\n\nUsage: `string | padStart: maxLength [ : fillString ]`\n\n```html\n{{ This is a test string! | padStart: 27: '--' }}\n\u003c!-- Returns '-----This is a test string!' --\u003e\n```\n\n\n### pascalCase\n\nConverts a string to pascal case and strips hyphens, underscores and whitespaces.\n\nUsage: `string | pascalCase`\n\n```html\n{{ 'convert_to PASCAL-case' | pascalCase }}\n\u003c!-- Returns 'ConvertToPascalCase' --\u003e\n```\n\n\n### repeat\n\nRepeats a given string 'count' number of times separated by an optional delimiter.\\\nDefault count is `1`. Default delimiter is empty string `''`.\\\nAn error is thrown if the value of count is less than 1.\n\nUsage: `string | repeat [ : count ] [ : delimiter ]`\n\n```html\n{{ 'Repeated' | repeat: 5: '_' }}\n\u003c!-- Returns Repeated_Repeated_Repeated_Repeated_Repeated --\u003e\n```\n\n\n### sentenceCase\n\nConverts a string to sentence case.\n\nUsage: `string | sentenceCase`\n\n```html\n{{ 'convert TO Sentence case.' | sentenceCase }}\n\u003c!-- Returns 'Convert to sentence case.' --\u003e\n```\n\n\n### slugify\n\nSlugifies a given string with an optional char separator.\nDefault separator char is hyphen '-'.\\\nSpecial characters are stripped from string.\n\nUsage: `string | slugify [ : separator ]`\n\n```html\n{{ 'this_-is__a - string!' | slugify: '_' }}\n\u003c!-- Returns 'this_is_a_string' --\u003e\n```\n\n\n### split\n\nSplits a given string into an array of sub-strings using an optional delimiter.\\\nDefault delimiter is space `' '`.\\\nOptionally, you may also specify a limit (integer) on the number of splits.\n\nUsage: `string | split [ : delimiter ] [ : limit ]`\n\n```html\n{{ 'This_is_a_string_separated_with_underscore' | split: '_': 4 }}\n\u003c!-- Returns ['This', 'is', 'a', 'string'] --\u003e\n```\n\n\n### titleCase\n\nConverts a string to titleCase case.\n\nUsage: `string | titleCase`\n\n```html\n{{ 'convert TO title cASE.' | titleCase }}\n\u003c!-- Returns 'Convert To Title Case.' --\u003e\n```\n\n\n### trim\n\nStrips the leading and trailing whitespaces from a given string.\n\nUsage: `string | trim`\n\n```html\n{{ ' This is a test string!  ' | trim }}\n\u003c!-- Returns 'This is a test string!' --\u003e\n```\n\n\n### trimLeft\n\nStrips the leading whitespaces from a given string.\n\nUsage: `string | trimLeft`\n\n```html\n{{ ' This is a test string!  ' | trimLeft }}\n\u003c!-- Returns 'This is a test string!  ' --\u003e\n```\n\n\n### trimRight\n\nStrips the trailing whitespaces from a given string.\n\nUsage: `string | trimRight`\n\n```html\n{{ ' This is a test string!  ' | trimRight }}\n\u003c!-- Returns ' This is a test string!' --\u003e\n```\n\n\n### truncate\n\nShortens the given string to specified `length` followed by an ellipsis `'...'`.\nOptionally, you may also specify a suffix (string).\nAn error is thrown if the value of `length` is less than 1.\n\nUsage: `string | truncate : length [ : suffix ]`\n\n```html\n{{ 'This is a test string!' | truncate : 14 }}\n\u003c!-- Returns 'This is a test...' --\u003e\n```\n\n\n### upperCase\n\nConverts a given string to upper case.\n\nUsage: `string | upperCase`\n\n```html\n{{ 'Convert TO UpPeR-case.' | upperCase }}\n\u003c!-- Returns 'CONVERT TO UPPER-CASE.' --\u003e\n```\n\n\n## Number Pipes\n\nA collection of pipes exported by `NglrxNumberPipesModule`.\n\n\n### abs\n\nReturns the absolute value of given number.\n\nUsage: `number | abs`\n\n```html\n{{ -384 | abs }}\n\u003c!-- Returns 384 --\u003e\n```\n\n\n### avg\n\nReturns the average of all numbers in a given array.\n\nUsage: `array | avg`\n\n```html\n{{ [10, 45, 200, 5, 92] | avg }}\n\u003c!-- Returns 70.4 --\u003e\n```\n\n\n### ceil\n\nReturns the smallest number with specified decimal places greater than or equal to given number. By default the value is rounded-up to the nearest integer.\n\nOptionally, the number of decimal places to which the result should be rounded-up may also be specified.\n\nUsage: `number | ceil [ : decimalPlaces]`\n\n```html\n{{ 9876.54321 | ceil: 2 }}\n\u003c!-- Returns 9876.55 --\u003e\n```\n\n\n### floor\n\nReturns the greatest number with specified decimal places less than or equal to given number. By default the value is rounded-down to the nearest integer.\n\nOptionally, the number of decimal places to which the result should be rounded-down may also be specified.\n\nUsage: `number | floor [ : decimalPlaces]`\n\n```html\n{{ 1234.56789 | floor: 3 }}\n\u003c!-- Returns 1234.567 --\u003e\n```\n\n\n### max\n\nFinds the maximum from an array of numbers.\n\nUsage: `array | max`\n\n```html\n{{ [10, 45, 200, 5, 92] | max }}\n\u003c!-- Returns 200 --\u003e\n```\n\n\n### min\n\nFinds the minimum from an array of numbers.\n\nUsage: `array | min`\n\n```html\n{{ [10, 45, 200, 5, 92] | min }}\n\u003c!-- Returns 5 --\u003e\n```\n\n\n### pct\n\nReturns how much percent is a number of the given total. If not specified default value is 100.\\\nOptionally, number of decimal places (integer) may be specified to round-off the percentage.\n\nUsage: `number | pct [ : total ] [ : decimalPlaces ]`\n\n```html\n{{ 25 | pct: 483: 2 }}\n\u003c!-- Returns 5.18 --\u003e\n```\n\n\n### pow\n\nReturns the value of the base raised to a specified power.\\\nDefault value of exponent is 0.\n\nUsage: `base | pow [ : exponent ]`\n\n```html\n{{ 4 | pow: 3 }}\n\u003c!-- Returns 64 --\u003e\n```\n\n\n### round\n\nReturns the rounded value of given number. By default the value is rounded to the nearest integer.\n\nIt also accepts an optional argument `RoundType` for rounding the value up or down.\\\n`RoundType.Default` = Default rounding as in `Math.round()`\\\n`RoundType.Floor` = Round down as in `Math.floor()`\\\n`RoundType.Ceil` = Round up as in `Math.ceil()`\n\nOptionally, the number of decimal places to which the result should be rounded may also be specified.\n\nUsage: `number | round [ : decimalPlaces] [ : roundType ]`\n\n```html\n{{ 1234.56789 | round }}\n\u003c!-- Returns 1235 --\u003e\n\n{{ 1234.56789 | round: 3: RoundType.Floor }}\n\u003c!-- Returns 1234.567 --\u003e\n\n{{ 9876.54321 | round: 2: RoundType.Ceil }}\n\u003c!-- Returns 9876.55 --\u003e\n```\n\n\n### sqrt\n\nReturns the square root of given number.\n\nUsage: `number | sqrt`\n\n```html\n{{ 625 | sqrt }}\n\u003c!-- Returns 25 --\u003e\n```\n\n\n### sum\n\nReturns the sum of all numbers in a given array.\n\nUsage: `array | sum`\n\n```html\n{{ [10, 45, 200, 5, 92] | sum }}\n\u003c!-- Returns 352 --\u003e\n```\n\n\n## Array Pipes\n\nA collection of pipes exported by `NglrxArrayPipesModule`.\n\n\n### combine\n\nCombines an array with other array(s) or single items of same type.\n\nUsage: `array | combine [ : element | array ]...`\n\n```html\n{{ ['a', 'b', 'c'] | combine: ['d', 'e']: 'f' }}\n\u003c!-- Returns ['a', 'b', 'c', 'd', 'e', 'f'] --\u003e\n```\n\n\n### copyWithin\n\nCopies the portion of array marked by start and end to position specified by `target` within the same array.\n\nIf `start` is not specified then it copies from the beginning of array. If `end` is not specified then it copies till the end of array.\\\nNegative values of start and end are treated as length + start/end.\n\nUsage: `array | copyWithin : target [ : start ] [ : end ]`\n\n```html\n{{ [1, 2, 3, 4, 5, 6] | copyWithin: 4: 1: -3 }}\n\u003c!-- Returns [1, 2, 3, 4, 2, 3] --\u003e\n```\n\n\n### every\n\nChecks whether all the elements of the given array satisfy the specified test.\n\nA `callbackFn` function must be specified that accepts up to three arguments. The callbackFn is invoked for each element in the given array until it returns a false, or until the last element of the array.\\\nOptionally, a reference `thisArg` to an object to which the `this` keyword can refer in the callbackFn function may be passed.\n\nUsage: `array | every : callbackFn`\n\n```html\n{{ ['a', 'b', 'c', 'd', 'e'] | every: (n: string) =\u003e n !== '' }}\n\u003c!-- Returns true --\u003e\n\n{{ [10, 11, 12, 13, 14] | every: (n: number) =\u003e n % 2 === 0) }}\n\u003c!-- Returns false --\u003e\n```\n\n\n### fill\n\nFills the portion of array marked by start and end with specified `value` of same type as array.\n\nIf `start` is not specified then it fills from the beginning of array. If `end` is not specified then it fills till the end of array.\\\nNegative values of start and end are treated as length + start/end.\n\nUsage: `array | fill : value [ : start ] [ : end ]`\n\n```html\n{{ ['a', 'b', 'c', 'd', 'e', 'f'] | fill: '-': 2: -2 }}\n\u003c!-- Returns ['a', 'b', '-', '-', 'e', 'f'] --\u003e\n```\n\n\n### first\n\nReturns the first `count` elements from the given array.\n\nIf no count is specified, by default the first element is returned.\\\nNegative value of count is treated as `length + count` and values except last `length + count` are returned.\\\nNo values are returned if either count is `0` or value of count is beyond the limits.\n\nUsage: `array | first [ : count ]`\n\n```html\n{{ ['a', 'b', 'c', 'd', 'e'] | first }}\n\u003c!-- Returns ['a'] --\u003e\n\n{{ [1, 2, 3, 4, 5] | first: 2 }}\n\u003c!-- Returns [1, 2] --\u003e\n\n{{ [1, 2, 3, 4, 5] | first: -2 }}\n\u003c!-- Returns [1, 2, 3] --\u003e\n```\n\n\n### join\n\nCreates a string by concatenating all the strings in the given array using a separator.\\\nIf unspecified, the default separator is comma `','`.\n\nUsage: `array | join [ : separator ]`\n\n```html\n{{ ['This', 'is', 'a', 'string'] | join: '_' }}\n\u003c!-- Returns 'This_is_a_string' --\u003e\n```\n\n\n### last\n\nReturns the last `count` elements from the given array.\n\nIf no count is specified, by default the last element is returned.\\\nNegative value of count is treated as `length + count` and values except first `length + count` are returned.\\\nNo values are returned if either count is `0` or value of count is beyond the limits.\n\nUsage: `array | last [ : count ]`\n\n```html\n{{ ['a', 'b', 'c', 'd', 'e'] | last }}\n\u003c!-- Returns ['e'] --\u003e\n\n{{ [1, 2, 3, 4, 5] | last: 2 }}\n\u003c!-- Returns [4, 5] --\u003e\n\n{{ [1, 2, 3, 4, 5] | last: -2 }}\n\u003c!-- Returns [3, 4, 5] --\u003e\n```\n\n\n### map\n\nCalls the specified callback function on each element of the given array, and returns an array of results returned by callback function.\n\nA `callbackFn` function must be specified that accepts up to three arguments. The callbackFn is invoked for each element in the given array.\\\nOptionally, a reference `thisArg` to an object to which the `this` keyword can refer in the callbackFn function may be passed.\n\nUsage: `array | map : callbackFn`\n\n```html\n{{ ['a', 'b', 'c', 'd', 'e'] | map: (n: string) =\u003e n.toUpperCase() }}\n\u003c!-- Returns ['A', 'B', 'C', 'D', 'E'] --\u003e\n\n{{ [1, 2, 3, 4, 5] | map: (n: number) =\u003e n * n) }}\n\u003c!-- Returns [1, 4, 9, 16, 25] --\u003e\n```\n\n\n### some\n\nChecks whether some the elements of the given array satisfy the specified test.\n\nA `callbackFn` function must be specified that accepts up to three arguments. The callbackFn is invoked for each element in the given array until it returns a true, or until the last element of the array.\\\nOptionally, a reference `thisArg` to an object to which the `this` keyword can refer in the callbackFn function may be passed.\n\nUsage: `array | some : callbackFn`\n\n```html\n{{ ['a', 'b', 'c', 'd', 'e'] | some: (n: string) =\u003e n === '' }}\n\u003c!-- Returns false --\u003e\n\n{{ [10, 11, 12, 13, 14] | some: (n: number) =\u003e n % 2 === 0) }}\n\u003c!-- Returns true --\u003e\n```\n\n\n## Generic Pipes\n\nA collection of pipes exported by `NglrxGenericPipesModule`.\n\n\n### length\n\nReturns the length of a given value of any supported type.\\\nSupported data types are string, array, number, boolean, or any data type which has own property 'length'.\\\nFor an array the number of elements is returned. For others the number of characters in value is returned.\n\nUsage: `value | length`\n\n```html\n{{ 'This is a test string!' | length }}\n\u003c!-- Returns 22 --\u003e\n\n{{ [10, 45, 200, 50, 92] | length }}\n\u003c!-- Returns 5 --\u003e\n```\n\n\n### reverse\n\nReverses a given value of any supported type.\\\nSupported data types are string, array, number, boolean.\\\nFor an array the sequence of elements is reversed. For others the sequence of characters in value is reversed.\n\nUsage: `value | reverse`\n\n```html\n{{ 'This is a test string!' | reverse }}\n\u003c!-- Returns '!gnirts tset a si sihT' --\u003e\n\n{{ ['a', 'b', 'c', 'd', 'e'] | reverse }}\n\u003c!-- Returns ['e', 'd', 'c', 'b', 'a'] --\u003e\n```\n\n\n### typeOf\n\nReturns the type of given value.\\\nReturns the name of the type in string. All types are supported.\n\nUsage: `value | typeOf`\n\n```html\n{{ 'This is a test string!' | typeOf }}\n\u003c!-- Returns 'string' --\u003e\n\n{{ { foo: 'bar' } | typeOf }}\n\u003c!-- Returns 'object' --\u003e\n```\n\n\\\nFor more information on pipes, refer to [Angular - pipes](https://angular.io/guide/pipes) documentation.\n","funding_links":[],"categories":["Table of contents"],"sub_categories":["Third Party Components"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnglrx%2Fpipes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnglrx%2Fpipes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnglrx%2Fpipes/lists"}