{"id":15068290,"url":"https://github.com/useflyyer/flyyer-js","last_synced_at":"2025-10-23T22:13:48.352Z","repository":{"id":38426666,"uuid":"286131958","full_name":"useflyyer/flyyer-js","owner":"useflyyer","description":"SaaS to manage, optimize and generate your og:image og-image","archived":false,"fork":false,"pushed_at":"2023-03-05T10:08:00.000Z","size":2603,"stargazers_count":17,"open_issues_count":12,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-08-08T16:42:07.024Z","etag":null,"topics":["expressjs","flyyer","image-generator","javascript","nextjs","node","og-image","og-images","open-graph","social-preview","twitter-cards","typescript"],"latest_commit_sha":null,"homepage":"https://flyyer.io","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/useflyyer.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-08-08T23:01:13.000Z","updated_at":"2023-11-11T22:52:14.000Z","dependencies_parsed_at":"2024-06-19T16:04:05.845Z","dependency_job_id":"f2b72207-50a0-40c1-b6f3-1567601bdeb5","html_url":"https://github.com/useflyyer/flyyer-js","commit_stats":{"total_commits":132,"total_committers":3,"mean_commits":44.0,"dds":0.08333333333333337,"last_synced_commit":"f40b3e999eaee26c8b34d7e6accd45a5144a482b"},"previous_names":["flayyer/flayyer-js"],"tags_count":41,"template":false,"template_full_name":null,"purl":"pkg:github/useflyyer/flyyer-js","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/useflyyer%2Fflyyer-js","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/useflyyer%2Fflyyer-js/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/useflyyer%2Fflyyer-js/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/useflyyer%2Fflyyer-js/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/useflyyer","download_url":"https://codeload.github.com/useflyyer/flyyer-js/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/useflyyer%2Fflyyer-js/sbom","scorecard":{"id":402920,"data":{"date":"2025-08-11","repo":{"name":"github.com/useflyyer/flyyer-js","commit":"f40b3e999eaee26c8b34d7e6accd45a5144a482b"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.5,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/main.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Code-Review","score":0,"reason":"Found 1/28 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/useflyyer/flyyer-js/main.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/useflyyer/flyyer-js/main.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/useflyyer/flyyer-js/main.yml/master?enable=pin","Info:   0 out of   3 GitHub-owned GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 4 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"37 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-968p-4wvh-cqc8","Warn: Project is vulnerable to: GHSA-67hx-6x53-jw92","Warn: Project is vulnerable to: GHSA-h5c3-5r3r-rr8q","Warn: Project is vulnerable to: GHSA-rmvr-2pp2-xj38","Warn: Project is vulnerable to: GHSA-xx4v-prfh-6cgc","Warn: Project is vulnerable to: GHSA-93q8-gq69-wqmw","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-w573-4hg7-7wgq","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-rc47-6667-2j5j","Warn: Project is vulnerable to: GHSA-78xj-cgh5-2h22","Warn: Project is vulnerable to: GHSA-2p57-rm9w-gvfp","Warn: Project is vulnerable to: GHSA-896r-f27r-55mw","Warn: Project is vulnerable to: GHSA-9c47-m6qq-7p4h","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-xvch-5gv4-984h","Warn: Project is vulnerable to: GHSA-r683-j2x4-v87g","Warn: Project is vulnerable to: GHSA-5fw9-fq32-wv5p","Warn: Project is vulnerable to: GHSA-j9fq-vwqv-2fm2","Warn: Project is vulnerable to: GHSA-pqw5-jmp5-px4v","Warn: Project is vulnerable to: GHSA-hrpp-h998-j3pp","Warn: Project is vulnerable to: GHSA-p8p7-x288-28g6","Warn: Project is vulnerable to: GHSA-gcx4-mw62-g8wm","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-4x5v-gmq8-25ch","Warn: Project is vulnerable to: GHSA-4rq4-32rv-6wp6","Warn: Project is vulnerable to: GHSA-64g7-mvw6-v9qj","Warn: Project is vulnerable to: GHSA-f5x3-32g6-xq36","Warn: Project is vulnerable to: GHSA-4wf5-vphf-c2xc","Warn: Project is vulnerable to: GHSA-52f5-9888-hmc6","Warn: Project is vulnerable to: GHSA-72xf-g2v4-qvf3","Warn: Project is vulnerable to: GHSA-j8xg-fqg3-53r7","Warn: Project is vulnerable to: GHSA-3h5v-q93c-6h6q","Warn: Project is vulnerable to: GHSA-f9xv-q969-pqx4"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-18T20:30:03.546Z","repository_id":38426666,"created_at":"2025-08-18T20:30:03.546Z","updated_at":"2025-08-18T20:30:03.546Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271246662,"owners_count":24725900,"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","status":"online","status_checked_at":"2025-08-19T02:00:09.176Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["expressjs","flyyer","image-generator","javascript","nextjs","node","og-image","og-images","open-graph","social-preview","twitter-cards","typescript"],"created_at":"2024-09-25T01:33:12.428Z","updated_at":"2025-10-23T22:13:48.269Z","avatar_url":"https://github.com/useflyyer.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# flyyer-js\n\n![npm-version](https://badgen.net/npm/v/@flyyer/flyyer) ![downloads](https://badgen.net/npm/dt/@flyyer/flyyer) ![size](https://badgen.net/bundlephobia/minzip/@flyyer/flyyer) ![tree-shake](https://badgen.net/bundlephobia/tree-shaking/@flyyer/flyyer)\n\nFormat URLs to generate social media images using Flyyer.io.\n\n**To create templates with React.js or Vue.js use [create-flyyer-app](https://github.com/useflyyer/create-flyyer-app) 👈**\n\n![Flyyer live image](https://github.com/useflyyer/create-flyyer-app/blob/master/.github/assets/website-to-preview.png?raw=true\u0026v=1)\n\n**This module is agnostic to any JS framework and has only one dependency: [qs](https://github.com/ljharb/qs).**\n\n## Index\n\n- [Get started (5 minutes)](#get-started-5-minutes)\n- [Advanced usage](#advanced-usage)\n- [Flyyer Render](#flyyer-render)\n- [Development](#development)\n- [Test](#test)\n- [FAQ](#faq)\n\n## Get started (5 minutes)\n\n### 1. Install module\n\nThis module supports Node.js, Browser and can be bundled with any tool such as Rollup, Webpack, etc and includes Typescript definitions.\n\n```sh\nyarn add @flyyer/flyyer\n\n# or with npm:\nnpm install --save @flyyer/flyyer\n```\n\n### 2. Flyyer.io smart image link\n\n\u003e Haven't registered your website yet? Go to [Flyyer.io](https://flyyer.io/get-started?ref=flyyer-js) and import your website to create a project (e.g. `website-com`).\n\nFor each of your routes, create an instance.\n\n```tsx\nimport { Flyyer } from \"@flyyer/flyyer\";\n\nconst flyyer = new Flyyer({\n  // Your project slug\n  project: \"website-com\",\n  // Relative path\n  path: `/path/to/product`,\n  // Optional: preserve and re-use your default or current image.\n  // default: \"/images/default-image.png\",\n});\n\nconsole.log(flyyer.href());\n// \u003e https://cdn.flyyer.io/v2/website-com/_/__v=1618281823/path/to/product\n```\n\n#### 2.1 Next.js\n\nRemember to dynamically get the current path for each page. If you are using [Next.js](https://nextjs.org/) you should probably do this:\n\n```tsx\nimport { useRouter } from 'next/router'\n\nfunction SEO() {\n  const router = useRouter();\n  const flyyer = new Flyyer({\n    project: \"my-project\",\n    path: router.asPath,\n    // default: product[\"image\"],\n  });\n  // ...\n}\n```\n\nCheck our official Next.js documentation [here](https://docs.flyyer.io/guides/javascript/nextjs?ref=flyyer-js);\n\n### 3. Setup `\u003chead\u003e` meta tags\n\nYou'll get the best results doing this:\n\n```tsx\n\u003cmeta property=\"og:image\" content={flyyer.href()} /\u003e\n\u003cmeta name=\"twitter:image\" content={flyyer.href()} /\u003e\n\u003cmeta name=\"twitter:card\" content=\"summary_large_image\" /\u003e\n```\n\n### 4. Manage rules\n\n[Login at Flyyer.io](https://flyyer.io/dashboard/_/projects/_/manage?ref=flyyer-js), select your project and go to Manage rules. Then create a rule like the following:\n\n[![Flyyer basic rule example](https://github.com/useflyyer/create-flyyer-app/blob/master/.github/assets/rule-example.png?raw=true\u0026v=1)](https://flyyer.io/dashboard/)\n\nVoilà! **To create templates with React.js or Vue.js use [create-flyyer-app](https://github.com/useflyyer/create-flyyer-app) 👈**\n\n## Advanced usage\n\nAdvanced features include:\n\n- Custom variables: additional information for your preview that is not present in your website. [Note: if you need customization you should take a look at [Flyyer Render](#flyyer-render)]\n- Custom metadata: set custom width, height, resolution, and more (see example).\n- Signed URLs.\n\nHere you have a detailed full example for project `website-com` and path `/path/to/product`.\n\n```tsx\nimport { Flyyer } from \"@flyyer/flyyer\";\n\nconst flyyer = new Flyyer({\n  // Project slug, find it in your dashboard https://flyyer.io/dashboard/.\n  project: \"website-com\",\n  // The current path of your website (by default it's `/`).\n  path: \"/path/to/product\",\n\n  // [Optional] Keep and re-use your current image.\n  default: product[\"image\"],\n\n  // [Optional] In case you want to provide information that is not present in your page set it here.\n  variables: {\n    title: \"Product name\",\n    img: \"https://flyyer.io/img/marketplace/flyyer-banner.png\",\n  },\n  // [Optional] Additional variables.\n  meta: {\n    id: \"jeans-123\", // stats identifier (e.g. product SKU), defaults to `path`.\n    width: 1080, // force width (pixels).\n    height: 1080, // force height (pixels).\n    v: null, // cache-burst, to circumvent platforms' cache, default to a timestamp, null to disable.\n  },\n});\n```\n\n\u003e Read more about integration guides here: https://docs.flyyer.io/guides\n\n## Flyyer Lite\n\nIf you are not using Signed URLs you can opt-in for `@flyyer/flyyer-lite` which is a lightweight version because it doesn't include crypto functions.\n\n```sh\nyarn add @flyyer/flyyer-lite\n```\n\nUsage is the same:\n\n```tsx\nimport { Flyyer } from \"@flyyer/flyyer-lite\";\n// ...\n```\n\n## FlyyerRender\n\n* Flyyer uses the [rules defined on your dashboard](https://flyyer.io/dashboard/_/projects) to decide how to handle every image. It analyse your website to render a content-rich image. Let's say _\"Flyyer renders images based on the content of this route\"_.\n\n* FlyyerRender instead requires you to explicitly declare template and variables for the images to render, **giving you more control for customization**. Let's say _\"FlyyerRender renders an image using this template and these explicit variables\"_.\n\n```tsx\nimport { FlyyerRender } from \"@flyyer/flyyer\";\nconst flyyer = new FlyyerRender({\n  tenant: \"flyyer\",\n  deck: \"default\",\n  template: \"main\",\n  variables: { title: \"try changing this\" },\n});\nconst url = flyyer.href()\n// https://cdn.flyyer.io/r/v2/flyyer/default/main.jpeg?title=try+changing+this\n```\n\n[![Resultant flyyer live image](https://github.com/useflyyer/create-flyyer-app/blob/master/.github/assets/result-1.png?raw=true\u0026v=1)](https://cdn.flyyer.io/r/v2/flyyer/default/main.jpeg?title=try+changing+this)\n\nAfter installing this module you can format URLs. Here is an example with React.js, but note this can be used with any framework:\n\n```tsx\nimport React from \"react\";\nimport { FlyyerRender } from \"@flyyer/flyyer\";\n\nfunction Head() {\n  const flyyer = new FlyyerRender({\n    tenant: \"tenant\",\n    deck: \"deck\",\n    template: \"template\",\n    variables: {\n      title: \"Hello world!\",\n      image: \"https://yoursite.com/image/products/1.png\",\n    },\n  });\n  const url = flyyer.href();\n\n  return (\n    \u003chead\u003e\n      \u003cmeta property=\"og:image\" content={url} /\u003e\n      \u003cmeta name=\"twitter:image\" content={url} /\u003e\n      \u003cmeta name=\"twitter:card\" content=\"summary_large_image\" /\u003e\n    \u003c/head\u003e\n  );\n}\n```\n\nVariables can be complex arrays and objects.\n\n```js\nconst flyyer = new FlyyerRender({\n  // ...\n  variables: {\n    items: [\n      { text: \"Oranges\", count: 12 },\n      { text: \"Apples\", count: 14 },\n    ],\n  },\n  meta {\n    id: \"slug-or-id\", // To identify the resource in our analytics report\n  }\n});\n```\n\n**IMPORTANT: variables must be serializable.**\n\nYou can **set image dimensions**, note if your are planing to use this as `\u003cimg src={flyyer.href()} /\u003e` you should disable cache-bursting.\n\n```tsx\nconst flyyer = new FlyyerRender({\n  tenant: \"tenant\",\n  deck: \"default\",\n  template: \"main\",\n  variables: {\n    title: \"Awesome 😃\",\n    description: \"Optional description\",\n  },\n  meta: {\n    v: null, // prevent cache-bursting in browsers\n    width: 1080, // in pixels\n    height: 1920, // in pixels\n  }\n});\n\n\u003cimg src={flyyer.href()}\u003e\n```\n\n[![Resultant flyyer live image](https://github.com/useflyyer/create-flyyer-app/blob/master/.github/assets/result-2.png?raw=true\u0026v=1)](https://cdn.flyyer.io/r/v2/flyyer/default/main.jpeg?title=awesome!+%F0%9F%98%83\u0026description=Optional+description\u0026_w=1080\u0026_h=1920)\n\n**To create templates with React.js or Vue.js use [create-flyyer-app](https://github.com/useflyyer/create-flyyer-app) 👈**\n\n---\n\n## Development\n\nPrepare the local environment:\n\n```sh\nyarn install\n```\n\nTo decode an URL for debugging purposes:\n\n```js\nconsole.log(decodeURI(url));\n// \u003e https://cdn.flyyer.io/r/v2/tenant/deck/template.jpeg?title=Hello+world!\u0026__v=123\n```\n\nHelpers to compare instances (ignores `__v` param and performs a shallow compare of `variables`).\n\n```tsx\nimport {\n  isEqualFlyyer,\n  isEqualFlyyerRender,\n  isEqualFlyyerMeta,\n} from \"@flyyer/flyyer\";\nimport { dequal } from \"dequal/lite\";\n\nconst boolean = isEqualFlyyer(fio1, fio2, dequal);\n```\n\n## Test\n\nTo run tests:\n\n```sh\nyarn test\n```\n\n## FAQ\n\n### What is the difference between Flyyer and FlyyerRender?\n\n* Flyyer uses the [rules defined on your dashboard](https://flyyer.io/dashboard/_/projects) to decide how to handle every image. It analyse your website to render a content-rich image. Let's say _\"Flyyer renders images based on the content of this route\"_.\n\n* FlyyerRender instead requires you to explicitly declare template and variables for the images to render, **giving you more control for customization**. Let's say _\"FlyyerRender renders an image using this template and these explicit variables\"_.\n\n### Is it compatible with Nextjs, React, Vue, Express and other frameworks?\n\nThis is framework-agnostic, you can use this library on any framework on any platform.\n\n### How to configure Flyyer rules?\n\nVisit your [project rules and settings](https://flyyer.io/dashboard/_/projects) on the Flyyer Dashboard.\n\n### What is the `__v=` thing?\n\nMost social networks caches images, we use this variable to invalidate their caches but we ignore it on our system to prevent unnecessary renders. **We strongly recommend it and its generated by default.**\n\nPass `meta: { v: null }` to disabled it (not recommended).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuseflyyer%2Fflyyer-js","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fuseflyyer%2Fflyyer-js","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuseflyyer%2Fflyyer-js/lists"}