{"id":48355129,"url":"https://github.com/arobase-che/remark-attr","last_synced_at":"2026-04-05T11:01:25.416Z","repository":{"id":32365088,"uuid":"132360654","full_name":"arobase-che/remark-attr","owner":"arobase-che","description":"Remark plugin to add support for custom attributes","archived":false,"fork":false,"pushed_at":"2023-01-06T02:40:02.000Z","size":1476,"stargazers_count":59,"open_issues_count":18,"forks_count":15,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-08-29T16:53:17.885Z","etag":null,"topics":["markdown","remark","remark-plugin"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/arobase-che.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":"2018-05-06T17:24:47.000Z","updated_at":"2025-07-18T14:03:23.000Z","dependencies_parsed_at":"2023-01-14T21:02:50.449Z","dependency_job_id":null,"html_url":"https://github.com/arobase-che/remark-attr","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/arobase-che/remark-attr","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arobase-che%2Fremark-attr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arobase-che%2Fremark-attr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arobase-che%2Fremark-attr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arobase-che%2Fremark-attr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/arobase-che","download_url":"https://codeload.github.com/arobase-che/remark-attr/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arobase-che%2Fremark-attr/sbom","scorecard":{"id":208021,"data":{"date":"2025-08-11","repo":{"name":"github.com/arobase-che/remark-attr","commit":"325f0ef730eafa601c9b631ea175b26c18c85a4a"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.7,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","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":"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":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"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":"Code-Review","score":0,"reason":"Found 2/30 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":"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":"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":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"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":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"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":"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 2 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":"38 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-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-x9w5-v3q2-3rhw","Warn: Project is vulnerable to: GHSA-w8qv-6jwh-64r5","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-gxpj-cx7g-858c","Warn: Project is vulnerable to: GHSA-w573-4hg7-7wgq","Warn: Project is vulnerable to: GHSA-r9p9-mrjm-926w","Warn: Project is vulnerable to: GHSA-434g-2637-qmqr","Warn: Project is vulnerable to: GHSA-49q7-c7j4-3p7m","Warn: Project is vulnerable to: GHSA-977x-g7h5-7qgw","Warn: Project is vulnerable to: GHSA-f7q4-pwc6-w24p","Warn: Project is vulnerable to: GHSA-fc9h-whq2-v747","Warn: Project is vulnerable to: GHSA-vjh7-7g9h-fjfh","Warn: Project is vulnerable to: GHSA-ww39-953v-wcq6","Warn: Project is vulnerable to: GHSA-pfrx-2q88-qq97","Warn: Project is vulnerable to: GHSA-43f8-2h32-f4cj","Warn: Project is vulnerable to: GHSA-rc47-6667-2j5j","Warn: Project is vulnerable to: GHSA-qqgx-2p2h-9c37","Warn: Project is vulnerable to: GHSA-9c47-m6qq-7p4h","Warn: Project is vulnerable to: GHSA-29mw-wpgm-hmr9","Warn: Project is vulnerable to: GHSA-35jh-r3h4-6jhm","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-px4h-xg32-q955","Warn: Project is vulnerable to: GHSA-hj48-42vr-x3v9","Warn: Project is vulnerable to: GHSA-h7cp-r72f-jxh6","Warn: Project is vulnerable to: GHSA-v62p-rq8g-8h59","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-w5p7-h5w8-2hfq","Warn: Project is vulnerable to: GHSA-7p7h-4mm5-852v","Warn: Project is vulnerable to: GHSA-38fc-wpqx-33j7","Warn: Project is vulnerable to: GHSA-j8xg-fqg3-53r7","Warn: Project is vulnerable to: GHSA-c4w7-xm78-47vh"],"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-17T00:10:43.256Z","repository_id":32365088,"created_at":"2025-08-17T00:10:43.256Z","updated_at":"2025-08-17T00:10:43.256Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31433044,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T08:13:15.228Z","status":"ssl_error","status_checked_at":"2026-04-05T08:13:11.839Z","response_time":75,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["markdown","remark","remark-plugin"],"created_at":"2026-04-05T11:01:24.912Z","updated_at":"2026-04-05T11:01:25.411Z","avatar_url":"https://github.com/arobase-che.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# remark-attr\n\nThis plugin adds support for custom attributes to Markdown syntax.\n\nFor **security reasons**, this plugin uses [html-element-attributes](https://github.com/wooorm/html-element-attributes).\nThe use of JavaScript attributes (`onload` for example) is not allowed by default.\n\n\n## Default Syntax\n\nImages :\n\n~~~markdown\n![alt](img){attrs} / ![alt](img){ height=50 }\n~~~\n\n\nLinks :\n~~~markdown\n[rms with a computer](https://rms.sexy){rel=\"external\"}\n~~~\n\n\nAutolink :\n\n~~~markdown\nEmail me at : \u003cmailto:falseEmail@example.org\u003e\n~~~\n\n\nHeader (Atx) :\n\n~~~markdown\n### This is a title\n{style=\"color:red;\"}\n\nor\n\n### This is a title {style=\"color:yellow;\"}\n\nIf option enableAtxHeaderInline is set to `true` (default value).\n~~~\n\n\nHeader :\n~~~markdown\nThis is a title\n---------------\n{style=\"color: pink;\"}\n~~~\n\nEmphasis :\n\n~~~markdown\nNpm stand for *node*{style=\"color:red\"} packet manager.\n~~~\n\n\nStrong :\n\n~~~markdown\nThis is a **Unicorn**{awesome} !\n~~~\n\nDelete :\n\n~~~markdown\nYour problem is ~~at line 18~~{style=\"color: grey\"}. My mistake, it's at line 14.\n\n\nCode :\n\n~~~markdown\nYou can use the `fprintf`{language=c} function to format the output to a file.\n~~~\n\n\nFootnote (using [remark-footnotes](https://github.com/remarkjs/remark-footnotes)) :\n\n~~~markdown\nThis is a footnote[^ref]{style=\"opacity: 0.8;\"}\n\n\n[^ref]: And the reference.\n~~~\n\n\n## rehype\n\nAt the moment it aims is to be used with [rehype][rehype] only, using remark-rehype.\n\n~~~md\n[rms with a computer](https://rms.sexy){rel=external}\n~~~\n\nproduces:\n\n~~~html\n\u003ca href=\"https://rms.sexy\" rel=\"external\"\u003erms with a computer\u003c/a\u003e\n~~~\n\n\n## Installation\n\n[npm][npm]:\n\n~~~bash\nnpm install remark-attr\n~~~\n\n\n## Dependencies:\n\n~~~javascript\nconst unified = require('unified')\nconst remarkParse = require('remark-parse')\nconst stringify = require('rehype-stringify')\nconst remark2rehype = require('remark-rehype')\nconst remarkAttr = require('remark-attr')\n~~~\n\n\n## Usage:\n\n~~~javascript\nconst testFile = `\n\nHere a test :\n\n![ache avatar](https://ache.one/res/ache.svg){ height=100 }\n\n`\n\nunified()\n  .use(remarkParse)\n  .use(remarkAttr)\n  .use(remark2rehype)\n  .use(stringify)\n  .process( testFile, (err, file) =\u003e {\n    console.log(String(file))\n  } )\n~~~\n\n\nOutput :\n\n~~~shell\n$ node index.js\n\u003cp\u003eHere a test :\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"https://ache.one/res/ache.svg\" alt=\"ache avatar\" height=\"100\"\u003e\u003c/p\u003e\n~~~\n\n\n## API\n\n### `remarkAttr([options])`\n\nParse attributes of markdown elements.\n\n#### `remarkAttr.SUPPORTED_ELEMENTS`\n\nThe list of currently supported elements.\n\n`['link', 'atxHeading', 'strong', 'emphasis', 'deletion', 'code', 'setextHeading']`\n\n`['link', 'atxHeading', 'strong', 'emphasis', 'deletion', 'code', 'setextHeading', 'fencedCode', 'reference', 'footnoteCall', 'autoLink']`\n\n##### Options\n\n###### `options.allowDangerousDOMEventHandlers`\n\nWhether to allow the use of `on-*` attributes. They are depreciated and disabled by default for security reasons. Its a boolean (default: `false`).\nIf allowed, DOM event handlers will be added to the **global scope**.\n\n###### `options.elements`\n\nThe list of elements which the attributes should be parsed.\nIt's a list of string, a sub-list of `SUPPORTED_ELEMENTS`.\nIf you are confident enough you can add the name of a tokenizer that isn't officialy supported but remember that it will not have been tested.\n\n###### `options.extend`\n\nAn object that extends the list of attributes supported for some elements.\n\nExample : `extend: {heading: ['original', 'quality', 'format', 'toc']}`\n\nWith this configuration, if the scope permits it, 4 mores attributes will be supported for atxHeading elements.\n\n###### `options.scope`\n\nA string with the value `global` or `specific` or `extented` or `none` or `every`.\n\n - `none` will disable the plugin.\n - `global` will activate only the global attributes.\n - `specific` will activate global and specific attributes.\n - `extended` will add personalized tags for some elements.\n - `permissive` or `every` will allow every attributes (except dangerous one) on every elements supported.\n\n###### `options.enableAtxHeaderInline`\n\nWhether to allow atx headers with attributes on the same line.\n\n~~~md\n### This is a title {style=\"color:yellow;\"}\n~~~\n\n## How does it works ?\n\nThis plugin extend the syntax of [remark-parse][remark-parse] by replacing old tokenizers by new one.\nThe new tokenizers functions re-use the old tokenizers and [md-attr-parser][md-attr-parser] to parse the extended syntax.\n\nSo `option.SUPPORTED_ELEMENTS` are the names of the tokenizers and neither arbitrary names nor HTML tag names.\nHere is the [related documentation][doc].\n\n\n## License\n\nDistributed under a MIT license.\n\n[npm]: https://www.npmjs.com/package/remark-attr\n[rehype]: https://github.com/wooorm/rehype\n[remar-parse]: https://github.com/remarkjs/remark/tree/master/packages/remark-parse\n[md-attr-parser]: https://github.com/arobase-che/md-attr-parser\n[doc]: https://github.com/remarkjs/remark/tree/master/packages/remark-parse#extending-the-parser\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farobase-che%2Fremark-attr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farobase-che%2Fremark-attr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farobase-che%2Fremark-attr/lists"}