{"id":13669513,"url":"https://github.com/Stolz/Assets","last_synced_at":"2025-04-27T04:33:21.639Z","repository":{"id":10919996,"uuid":"13220716","full_name":"Stolz/Assets","owner":"Stolz","description":"An ultra-simple-to-use assets management library for PHP","archived":false,"fork":false,"pushed_at":"2020-02-01T12:06:15.000Z","size":256,"stargazers_count":290,"open_issues_count":1,"forks_count":41,"subscribers_count":16,"default_branch":"master","last_synced_at":"2025-04-17T18:11:32.306Z","etag":null,"topics":["asset-manager","asset-pipeline","assets","assets-management","laravel","laravel-package","php"],"latest_commit_sha":null,"homepage":"","language":"PHP","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/Stolz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-09-30T16:34:20.000Z","updated_at":"2025-03-30T14:04:02.000Z","dependencies_parsed_at":"2022-09-06T17:11:17.842Z","dependency_job_id":null,"html_url":"https://github.com/Stolz/Assets","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Stolz%2FAssets","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Stolz%2FAssets/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Stolz%2FAssets/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Stolz%2FAssets/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Stolz","download_url":"https://codeload.github.com/Stolz/Assets/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250480707,"owners_count":21437592,"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":["asset-manager","asset-pipeline","assets","assets-management","laravel","laravel-package","php"],"created_at":"2024-08-02T08:01:16.040Z","updated_at":"2025-04-27T04:33:21.354Z","avatar_url":"https://github.com/Stolz.png","language":"PHP","funding_links":[],"categories":["PHP"],"sub_categories":[],"readme":"Assets\n======\n\nAn ultra-simple-to-use assets management PHP library.\n\n[![Build Status](https://travis-ci.org/Stolz/Assets.png?branch=master)](https://travis-ci.org/Stolz/Assets) [![Join the chat at https://gitter.im/Stolz/Assets](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/Stolz/Assets?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge)\n\n- [Features](#features).\n- [Supported frameworks](#frameworks).\n- [Installation](#installation).\n- [Usage](#usage).\n\t- [Views](#views).\n\t- [Controllers](#controllers).\n- [Configuration](#configuration).\n\t- [Collections](#collections).\n\t- [Pipeline](#pipeline).\n\t- [More options](#options).\n\t- [Multitenancy](#multitenancy).\n- [Non static interface usage](#nonstatic).\n- [Sample collections](#samples).\n- [Troubleshooting / F.A.Q.](#troubleshooting).\n- [License](#license).\n\n----\n\n\u003ca id=\"features\"\u003e\u003c/a\u003e\n## Features\n\n- **Very easy to use**.\n- Autogenerates HTML tags for including your JavaScript and CSS files.\n- Automatically detects type of asset (CSS, JavaScript or collection).\n- Supports programmatically adding assets on the fly.\n- Supports local (**including packages**) or remote assets.\n- Prevents from loading duplicated assets.\n- Included assets **pipeline** (*concatenate and minify all your assets to a single file*) with URL **timestamps** and **gzip** support.\n- Automatically prefixes local assets with a configurable folder name or url.\n- Supports secure (*https*) and protocol agnostic (*//*) links.\n- Supports **collections** (*named sets of assets*) that can be nested, allowing assets dependencies definitions.\n- Supports **multitenancy** (multiple independent configurations) for different groups of assets (*this feature is only available for Laravel \u003e= 5.0*).\n- Allows autoloading by default preconfigured assets and collections.\n\n\u003ca id=\"frameworks\"\u003e\u003c/a\u003e\n## Supported frameworks\n\nThe library is framework agnostic and it should work well with any framework or naked PHP application. Nevertheless, since the library is most popular between Laravel users the following instructions have been tailored for **Laravel 5** framework ([still on Laravel 4?](https://github.com/Stolz/Assets/issues/84#issuecomment-171149242)). If you want to use the library in any other scenario please read the [non static interface](#nonstatic) instructions.\n\n\u003ca id=\"installation\"\u003e\u003c/a\u003e\n## Installation\n\nIn your project base directory run\n\n\tcomposer require stolz/assets\n\nIf you are using Laravel version 5.5 or later there is nothing else you need to do. The service provider will be automatically loaded for you.\n\nIf you are using an older version of Laravel or you disabled the package discovery feature, then you have to manually edit `config/app.php` file and add the service provider within the `providers` array.\n\n\t'providers' =\u003e [\n\t\t//...\n\t\t'Stolz\\Assets\\Laravel\\ServiceProvider',\n\t\t//...\n\t],\n\nThere is no need to add the Facade, the package will bind it to the IoC for you.\n\n\u003ca id=\"usage\"\u003e\u003c/a\u003e\n## Usage\n\u003ca id=\"views\"\u003e\u003c/a\u003e\n### In your views/layouts\n\nTo generate the CSS `\u003clink rel=\"stylesheet\"\u003e` tags\n\n\techo Assets::css();\n\nTo generate the JavaScript `\u003cscript\u003e` tags\n\n\techo Assets::js();\n\n\u003ca id=\"controllers\"\u003e\u003c/a\u003e\n### In your routes/controllers\n\nBasically all you have to do to add and asset, no matter if it's CSS or JS or a collection of both, is:\n\n\tAssets::add('filename');\n\n\u003eFor more advanced uses keep reading but please note that there are some more methods not documented here. For a **full list of all the available methods** please read the provided [`API.md`](https://github.com/Stolz/Assets/blob/master/API.md) file.\n\n\nAdd more than one asset at once\n\n\tAssets::add(['another/file.js', 'one/more.css']);\n\nAdd an asset from a local package\n\n\tAssets::add('twitter/bootstrap:bootstrap.min.css');\n\nNote all local assets filenames are considered to be relative to you assets directory (configurable via `css_dir` and `js_dir` options) so you don't need to provide it every time with `js/file.js` or `css/file.css`, using just `file.js` or `file.css` will be enough.\n\nYou may add remote assets in the same fashion\n\n\tAssets::add('//cdn.example.com/jquery.js');\n\tAssets::add('http://example.com/style.css');\n\nIf your assets have no extension and autodetection fails, then just use canonical functions *(they accept an array of assets too)*\n\n\tAssets::addCss('CSSfile.foo');\n\tAssets::addJs('JavaScriptFile.bar');\n\nIf at some point you decide you added the wrong assets you can reset them and start over\n\n\tAssets::reset();    // Reset both CSS and JS\n\tAssets::resetCss(); // Reset only CSS\n\tAssets::resetJs();  // Reset only JS\n\nAll methods that don't generate output will accept chaining:\n\n\tAssets::reset()-\u003eadd('collection')-\u003eaddJs('file.js')-\u003ecss();\n\n\u003ca id=\"configuration\"\u003e\u003c/a\u003e\n## Configuration\n\nTo bring up the config file run\n\n\tphp artisan vendor:publish\n\nThis will create the file `config/assets.php` that you may use to configure the library. With the provided comments all options should be self explanatory.\n\nIf you are using the [non static interface](#nonstatic) just pass an associative array of config settings to the class constructor.\n\n\u003ca id=\"collections\"\u003e\u003c/a\u003e\n### Collections\n\nA collection is a named set of assets, that is, a set of JavaScript and CSS files. Any collection may include more collections, allowing dependencies definition and collection nesting. Collections can be created on run time or via config file.\n\nTo register a collection on run time for later use:\n\n\tAssets::registerCollection($collectionName, ['some', 'awesome', 'assets']);\n\nTo preconfigure collections using the config file:\n\n\t// ... File: config/assets.php ...\n\t'collections' =\u003e [\n\t\t'one'\t=\u003e 'one.css',\n\t\t'two'\t=\u003e ['two.css', 'two.js'],\n\t\t'external'\t=\u003e ['http://example.com/external.css', 'https://secure.example.com/https.css', '//example.com/protocol/agnostic.js'],\n\t\t'mix'\t=\u003e ['internal.css', 'http://example.com/external.js'],\n\t\t'nested' =\u003e ['one', 'two'],\n\t\t'duplicated' =\u003e ['nested', 'one.css','two.css', 'three.js'],\n\t],\n\nLet me show you how to use the above collection in different scenarios:\n\nUsing `Assets::add('two');` will result in\n\n\t\u003c!-- CSS --\u003e\n\t\u003clink type=\"text/css\" rel=\"stylesheet\" href=\"css/two.css\" /\u003e\n\t\u003c!-- JS --\u003e\n\t\u003cscript type=\"text/javascript\" src=\"js/two.js\"\u003e\u003c/script\u003e\n\nUsing `Assets::add('external');` will result in\n\n\t\u003c!-- CSS --\u003e\n\t\u003clink type=\"text/css\" rel=\"stylesheet\" href=\"http://example.com/external.css\" /\u003e\n\t\u003clink type=\"text/css\" rel=\"stylesheet\" href=\"https://secure.example.com/https.css\" /\u003e\n\t\u003c!-- JS --\u003e\n\t\u003cscript type=\"text/javascript\" src=\"//example.com/protocol/agnostic.js\"\u003e\u003c/script\u003e\n\nUsing `Assets::add('mix');` will result in\n\n\t\u003c!-- CSS --\u003e\n\t\u003clink type=\"text/css\" rel=\"stylesheet\" href=\"css/internal.css\" /\u003e\n\t\u003c!-- JS --\u003e\n\t\u003cscript type=\"text/javascript\" src=\"http://example.com/external.js\"\u003e\u003c/script\u003e\n\nUsing `Assets::add('nested');` will result in\n\n\t\u003c!-- CSS --\u003e\n\t\u003clink type=\"text/css\" rel=\"stylesheet\" href=\"css/one.css\" /\u003e\n\t\u003clink type=\"text/css\" rel=\"stylesheet\" href=\"css/two.css\" /\u003e\n\t\u003c!-- JS --\u003e\n\t\u003cscript type=\"text/javascript\" src=\"js/two.js\"\u003e\u003c/script\u003e\n\nUsing `Assets::add('duplicated');` will result in\n\n\t\u003c!-- CSS --\u003e\n\t\u003clink type=\"text/css\" rel=\"stylesheet\" href=\"css/one.css\" /\u003e\n\t\u003clink type=\"text/css\" rel=\"stylesheet\" href=\"css/two.css\" /\u003e\n\t\u003c!-- JS --\u003e\n\t\u003cscript type=\"text/javascript\" src=\"js/two.js\"\u003e\u003c/script\u003e\n\t\u003cscript type=\"text/javascript\" src=\"js/three.js\"\u003e\u003c/script\u003e\n\nNote even this last collection had duplicated assets they have been included only once.\n\n\u003ca id=\"pipeline\"\u003e\u003c/a\u003e\n### Pipeline\n\nTo enable pipeline use the `pipeline` config option\n\n\t'pipeline' =\u003e true,\n\nOnce it's enabled all your assets will be concatenated and minified to a single file, improving load speed and reducing the number of requests that a browser makes to render a web page.\n\nThis process can take a few seconds depending on the amount of assets and your connection but it's triggered only the first time you load a page whose assets have never been pipelined before. The subsequent times the same page (or any page using the same assets) is loaded, the previously pipelined file will be used giving you much faster loading time and less bandwidth usage.\n\n**Note:** For obvious reasons, using the pipeline is recommended only for production environment.\n\nIf your assets have changed since they were pipelined use the provided artisan command to purge the pipeline cache\n\n\tphp artisan asset:flush\n\nAlternatively, you may set the `pipeline` config option to a string value that evaluates to `true`. That value will be used as the salt of the pipeline hash. If you use `'auto'` as value the salt will be automatically calculated based on your assets last modification time.\n\nExample:\n\n\t'pipeline' =\u003e 'version 1.0',\n\nFinally, if you happen to use NGINX with the [gzip_static](http://nginx.org/en/docs/http/ngx_http_gzip_static_module.html) feature enabled, add the following config option to automatically create a suitable gziped version of the pipelined assets:\n\n\t'pipeline_gzip' =\u003e true,\n\n\u003ca id=\"options\"\u003e\u003c/a\u003e\n### Other configurable options\n\nFor a **full list of all the available config options** please read the provided [`API.md`](https://github.com/Stolz/Assets/blob/master/API.md) file.\n\n- `'autoload' =\u003e [],`\n\n\tHere you may set which assets (CSS files, JavaScript files or collections) should be loaded by default.\n- `'css_dir' =\u003e 'css',`\n- `'js_dir' =\u003e 'js',`\n\n\tOverride default base URL/folder for assets. Don't use trailing slash!. They will be prepended to all your local assets. Both relative paths or full URLs are supported.\n\n- `'pipeline_dir' =\u003e 'min',`\n\n\tOverride default folder for pipelined assets. Don't use trailing slash!.\n\nIt is possible to **change any config options on the fly** by passing an array of settings to the `config()` method. Useful if some assets use a different base directory or if you want to pipeline some assets and skip others from the pipeline. i.e:\n\n\techo Assets::reset()-\u003eadd('do-not-pipeline-this.js')-\u003ejs(),\n\t     Assets::reset()-\u003eadd('please-pipeline-this.js')-\u003econfig(['pipeline' =\u003e true])-\u003ejs();\n\n\u003ca id=\"multitenancy\"\u003e\u003c/a\u003e\n### Multitenancy\n\n**Note:** *This feature is only available for Laravel \u003e= 5.0*.\n\nMultitenancy is achieved using groups. A group is an isolated container of the library. Each group is totally independent of other groups so it uses its own settings and assets flow. This is useful if you need different approaches for different types of assets (for instance, you may need some assets to be pipelined but some others no). Therefore, when using multiple groups is your responsability to make sure the assets of different groups that depend on eachother are loaded in ther right order.\n\nBy default if no groups are defined the default group is used. To define a group just nest your normal settings within an array in the config file. The array key will be the group name. For instance:\n\n\n\t// ... File: config/assets.php ...\n\n\t// Default group\n\t'default' =\u003e [\n\t\t'pipeline' =\u003e true,\n\t\t'js_dir' =\u003e 'js',\n\t\t// ... more options for default group\n\t],\n\n\t// Other group\n\t'group1' =\u003e [\n\t\t'pipeline' =\u003e false,\n\t\t'public_dir' =\u003e '/foo',\n\t\t// ... more options for group1\n\t],\n\n\t// Another group\n\t'group2' =\u003e [\n\t\t'pipeline' =\u003e false,\n\t\t'css_dir' =\u003e 'css/admin',\n\t\t// ... more options for group2\n\t],\n\nFor choosing which group you want to interact with, use the `group()` method. If no group is specified the 'default' group will be used.\n\n\tAssets::add('foo.js')-\u003ejs(); // Uses default group\n\tAssets::group('group1')-\u003eadd('bar.css')-\u003ecss(); // Uses the 'group1' group.\n\nPlease note the `group()` method is part of the Facade, so it does not accept chaining and it always has to be used at the beginning of each interaction with the library.\n\n----\n\n\u003ca id=\"nonstatic\"\u003e\u003c/a\u003e\n## Non static interface\n\nYou can use the library without using static methods. The signature of all methods is the same as described above but using an instance of the class instead.\n\n\t// Load the library with composer\n\trequire __DIR__ . '/vendor/autoload.php';\n\n\t// Set config options\n\t$config = [\n\t\t'collections' =\u003e [...],\n\t\t'autoload' =\u003e [...],\n\t\t'pipeline' =\u003e true,\n\t\t'public_dir' =\u003e '/absolute/path/to/your/webroot/public/dir'\n\t\t...\n\t];\n\n\t// Instantiate the library\n\t$assets = new \\Stolz\\Assets\\Manager($config);\n\n\t// Add some assets\n\t$assets-\u003eadd('style.css')-\u003eadd('script.js');\n\n\t// Generate HTML tags\n\techo $assets-\u003ecss(),$assets-\u003ejs();\n\n----\n\n\u003ca id=\"samples\"\u003e\u003c/a\u003e\n## Sample collections\n\n\t// jQuery (CDN)\n\t'jquery-cdn' =\u003e ['//ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js'],\n\n\t// jQuery UI (CDN)\n\t'jquery-ui-cdn' =\u003e [\n\t\t'jquery-cdn',\n\t\t'//ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js',\n\t\t// Uncomment to load all languages '//ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/i18n/jquery-ui-i18n.min.js',\n\t\t// Uncomment to load a single language '//ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/i18n/jquery.ui.datepicker-es.min.js',\n\t\t// Uncomment to load a theme' //ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.min.css',\n\t],\n\n\t// Zurb Foundation (CDN)\n\t'foundation-cdn' =\u003e [\n\t\t'jquery-cdn',\n\t\t'//cdn.jsdelivr.net/foundation/5.5.1/css/normalize.css',\n\t\t'//cdn.jsdelivr.net/foundation/5.5.1/css/foundation.min.css',\n\t\t'//cdn.jsdelivr.net/foundation/5.5.1/js/foundation.min.js',\n\t\t'app.js'\n\t],\n\n\t// Twitter Bootstrap (CDN)\n\t'bootstrap-cdn' =\u003e [\n\t\t'jquery-cdn',\n\t\t'//netdna.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css',\n\t\t'//netdna.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap-theme.min.css',\n\t\t'//netdna.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js'\n\t],\n\n\t// Flags of all countries in one sprite (CDN)\n\t'flags-16px' =\u003e ['//cloud.github.com/downloads/lafeber/world-flags-sprite/flags16.css'],\n\t'flags-32px' =\u003e ['//cloud.github.com/downloads/lafeber/world-flags-sprite/flags32.css'],\n\n\u003ca id=\"license\"\u003e\u003c/a\u003e\n## License\n\nMIT License\n© [Stolz](https://github.com/Stolz)\n\nRead the provided `LICENSE` file for details.\n\n\u003ca id=\"troubleshooting\"\u003e\u003c/a\u003e\n## Troubleshooting / F.A.Q.\n\n\u003ca id=\"faq_support\"\u003e\u003c/a\u003e\n### Where can I ask for help/support?\n\nFirst please make sure you have read the [F.A.Q.](#troubleshooting) and [API docs](https://github.com/Stolz/Assets/blob/master/API.md) and if you still need help explain your problem in our [Gitter chat](https://gitter.im/Stolz/Assets).\n\n\u003ca id=\"faq_folders\"\u003e\u003c/a\u003e\n### Where should I copy my assets files?\n\nThey should be copied to the subfolders you specified with the `css_dir` and `js_dir` config options. Both folders are relative to your webroot/public folder. For package assets it's the same but relative to the `packages` folder within your webroot/public folder.\n\ni.e: Assuming the next scenario:\n\n- You are using the default settings.\n- Your webroot/public folder is `/myproject/public`\n- Your webroot/public contains:\n    - /myproject/public/css/foo.css\n    - /myproject/public/js/bar.js\n    - /myproject/public/packages/somevendor/somepackage/css/lorem.css\n    - /myproject/public/packages/anothervendor/anotherpackage/js/ipsum.js\n\nThen to load the assets you should run:\n\n\tAssets::add([\n\t\t'foo.css',\n\t\t'bar.js',\n\t\t'somevendor/somepackage:lorem.css',\n\t\t'anothervendor/anotherpackage:ipsum.js'\n\t]);\n\n\u003ca id=\"faq_base\"\u003e\u003c/a\u003e\n### Why assets work for the main page but not for subpages?\n\nIf your assets seem to work fine for \u003chttp://example.com\u003e but not for \u003chttp://example.com/some/other/place\u003e your are likely to be using relative links. If you use links relative to your root URI in an URI that is not your root URI for them to work you must use the [`\u003cbase\u003e` HTML tag](http://www.w3.org/TR/html4/struct/links.html#h-12.4) pointing to your root URI. This behavior is not related to the library or the framework but related to the [HTML standard](http://www.w3.org/TR/html401/struct/links.html#h-12.4.1) itself. Please make sure you understand the [semantics of relative links](http://tools.ietf.org/html/rfc3986#section-4) before reporting a bug.\n\n\u003ca id=\"faq_pipeline\"\u003e\u003c/a\u003e\n### The pipeline is not working\n\nMake sure `public_dir` config option is set and it's pointing to the **absolute** path of your webroot/public folder and the user that is running the library has write permissions for that folder.\n\nIf you use a massive amount of assets make sure your connection is fast enough and your computer is powerful enough to download and compress all the assets before the PHP maximum execution time is reached.\n\n\u003ca id=\"faq_config_on_the_fly\"\u003e\u003c/a\u003e\n### Can I use multiple instances of the library?\n\nYes you can but there is no need. You better use the [multitenancy feature](#multitenancy) (*only available for Laravel \u003e= 5.0*).\n\n\u003ca id=\"faq_instances\"\u003e\u003c/a\u003e\n### Can I change settings on the fly?\n\nYes you can. There is a `config()` public method to change settings on the fly. This allows you to use same instance of the library with different settings. i.e:\n\n\techo Assets::add('jquery-cdn')-\u003ejs();\n\techo Assets::reset()-\u003eadd(['custom.js', 'main.js'])-\u003econfig(['pipeline' =\u003e true])-\u003ejs();\n\nIf you want the different settings to be permanent, then use the [multitenancy feature](#multitenancy).\n\n\u003ca id=\"faq_filter\"\u003e\u003c/a\u003e\n### Can I filter/preprocess my assets?\n\nThe library does not include any built in filter/preprocessor functionality but it offers a way to provide your custom one when pipeline is enabled. Simply use the [fetch_command](https://github.com/Stolz/Assets/blob/master/API.md#fetch_command) config option to apply a custom [filter](https://github.com/Stolz/Assets/issues/23).\n\n\u003ca id=\"faq_to_help\"\u003e\u003c/a\u003e\n### How can I contribute?\n\nSend a pull requests to the **develop** branch. Read next question for your PR to have more chances to be accepted.\n\n\u003ca id=\"faq_pull_request_not_merged\"\u003e\u003c/a\u003e\n### Why my pull requests was not accepted?\n\nRemember, the main reason for the library to exist is to be easy to use. If your PR involves changing this and makes the library cumbersome to use then it will not be accepted.\n\nThis is a framework agnostic library, if your PR uses code related to your framework it will not be accepted.\n\nIf your contribution adds new features make sure to include a proper PHPUnit test for it.\n\nPlease use PHP_CodeSniffer to make sure your code follows the project coding standards (which is a slightly variation of [PSR-2](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md)).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FStolz%2FAssets","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FStolz%2FAssets","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FStolz%2FAssets/lists"}