{"_id":"@bernardjoseph/remark-tags","_rev":"1-07629ed79eff84e58c96bcdbb616f897","name":"@bernardjoseph/remark-tags","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@bernardjoseph/remark-tags","version":"0.1.0","description":"remark plugin to generate tags for Markdown documents","license":"MIT","keywords":["tags","markdown","remark","unified"],"repository":{"type":"git","url":"git+https://github.com/bernardjoseph/remark-tags.git"},"author":{"name":"Bernd Rellermeyer"},"type":"module","main":"index.js","types":"index.d.ts","bin":{"remark-tags":"bin/cli.js","remark-tags-filter":"bin/filter.js"},"dependencies":{"@bernardjoseph/remark-citekey":"^0.1.0","js-yaml":"^4.1.0","line-by-line":"^0.1.6","mdast-util-directive":"^2.2.4","remark-directive":"^2.0.1","remark-frontmatter":"^4.0.1","remark-parse":"^10.0.1","to-vfile":"^7.2.4","unified":"^10.1.2","unified-args":"^10.0.0","unified-engine":"^10.1.0","unist-util-visit":"^4.1.2"},"devDependencies":{"@types/line-by-line":"^0.1.6","@types/tape":"^4.13.2","c8":"^7.13.0","child_process":"^1.0.2","execa":"^7.1.0","prettier":"^2.8.4","remark":"^14.0.2","remark-cli":"^11.0.0","remark-preset-wooorm":"^9.1.0","rimraf":"^4.4.0","strip-ansi":"^7.0.1","tape":"^5.6.3","type-coverage":"^2.24.1","typescript":"^4.9.5","xo":"^0.53.1"},"scripts":{"build":"rimraf --glob \"lib/**/*.d.ts\" \"test/**/*.d.ts\" \"*.d.ts\" && tsc && type-coverage","format":"remark . -qfo --ignore-pattern test/ && prettier . -w --loglevel warn && xo --fix","test-api":"node --conditions development test/index.js","test-coverage":"c8 --check-coverage --branches 100 --functions 100 --lines 100 --statements 100 --reporter lcov npm run test-api","test":"npm run build && npm run format && npm run test-coverage"},"prettier":{"tabWidth":2,"useTabs":false,"singleQuote":true,"bracketSpacing":false,"semi":false,"trailingComma":"none"},"xo":{"prettier":true},"remarkConfig":{"plugins":["remark-preset-wooorm"]},"typeCoverage":{"atLeast":100,"detail":true,"strict":true,"ignoreCatch":true},"gitHead":"631c210b83bf4e3793f37332c0ac6c96d83e5f1d","bugs":{"url":"https://github.com/bernardjoseph/remark-tags/issues"},"homepage":"https://github.com/bernardjoseph/remark-tags#readme","_id":"@bernardjoseph/remark-tags@0.1.0","_nodeVersion":"19.8.1","_npmVersion":"9.5.1","dist":{"integrity":"sha512-aSXLc1Ixrak/bSmEuD1b9s0N5gXQCZ12vy+ARwu1D74qDdLpdurVE2P7M57n9B+sqeblOEc/RO4KNZVbDqNiWg==","shasum":"302013229dc4f60c73ad69ad2e711145d9bdb318","tarball":"https://registry.npmjs.org/@bernardjoseph/remark-tags/-/remark-tags-0.1.0.tgz","fileCount":12,"unpackedSize":26474,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA4HSV6GJwvIIQNoUGcX28iuSiMG7LgXME5xxJ7jUTufAiEAshPrfOZ5vQ7osJD9e0VpG7Q8LulKXLNQ0DU2dN1fQdw="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkJXUxACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrGYw//TjIj2Q1rgwVYabFBrckSGOE81lUsqk5zSxMUfM1Bj8cPBw8m\r\nJv4z/dOk6vqg9yf3+STEr8c+ISgYp2qR14tMyJM36K4ag7IkBtv5dzf0auKX\r\nhlffe4IcBL88tQX/f78hN63xWL3Gb1VTqBJJNEaIOrGUzmO0ivaoH9zkDsMF\r\nhpNrmli0/9TVYcHHUSzuHaJQm1aCxNln7DlLcei0iHud5bqKneQp9iO0DcXe\r\n9p07xvgybGYIDnDED0Lx9WkF3RwNpgF3w190mNv3aVWRNWDuGRWExlBEl4Uh\r\nRP73rdGF6ZuSYmbCYDwMVA5OEpWLBseDyXqEi9YVQafP7AoGI6fai7WKJZa6\r\nDH46qNAWVkKMNEBI0pIJey+4khZAWw6tOhBU4bz7xwhT7/FcSUX92M9U5dFL\r\nUs+En9jTu6sY3U/TICIset4jUEcHAA2gZx9TP3sA6IWAPwhi4vXq4uKbGtqi\r\nOa8v8EoxI7UE5UzEkXNm80aL2O3ejIq0UMN7DqedC4IyzVAXdFt8w/j+E4hw\r\nfkwpRxV7p5515o0iU7aLR9bquAl/vjeec7MlnTI1oQnN1ue/gGRwllZPZe49\r\nAZqnvQfv4oCMwkygV3WGPFSqGW9T+mcgejJVuaA7KRsoMpMBn8ldXKMBwfla\r\nm5JQnOjx4HzLACtMcfEQOW5HwW1NJV5m2DA=\r\n=jJwX\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"bernardjoseph","email":"bernd.rellermeyer@t-online.de"},"directories":{},"maintainers":[{"name":"bernardjoseph","email":"bernd.rellermeyer@t-online.de"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/remark-tags_0.1.0_1680176433219_0.2639561216759132"},"_hasShrinkwrap":false},"0.1.1":{"name":"@bernardjoseph/remark-tags","version":"0.1.1","description":"remark plugin to generate tags for Markdown documents","license":"MIT","keywords":["tags","markdown","remark","unified"],"repository":{"type":"git","url":"git+https://github.com/bernardjoseph/remark-tags.git"},"author":{"name":"Bernd Rellermeyer"},"type":"module","main":"index.js","types":"index.d.ts","bin":{"remark-tags":"bin/cli.js","remark-tags-filter":"bin/filter.js"},"dependencies":{"@bernardjoseph/remark-citekey":"^0.1.0","js-yaml":"^4.1.0","line-by-line":"^0.1.6","mdast-util-directive":"^2.2.4","remark-directive":"^2.0.1","remark-frontmatter":"^4.0.1","remark-parse":"^10.0.1","to-vfile":"^7.2.4","unified":"^10.1.2","unified-args":"^10.0.0","unified-engine":"^10.1.0","unist-util-visit":"^4.1.2"},"devDependencies":{"@types/line-by-line":"^0.1.6","@types/tape":"^4.13.2","c8":"^7.13.0","child_process":"^1.0.2","execa":"^7.1.0","prettier":"^2.8.4","remark":"^14.0.2","remark-cli":"^11.0.0","remark-preset-wooorm":"^9.1.0","rimraf":"^4.4.0","strip-ansi":"^7.0.1","tape":"^5.6.3","type-coverage":"^2.24.1","typescript":"^4.9.5","xo":"^0.53.1"},"scripts":{"build":"rimraf --glob \"lib/**/*.d.ts\" \"test/**/*.d.ts\" \"*.d.ts\" && tsc && type-coverage","format":"remark . -qfo --ignore-pattern test/ && prettier . -w --loglevel warn && xo --fix","test-api":"node --conditions development test/index.js","test-coverage":"c8 --check-coverage --branches 100 --functions 100 --lines 100 --statements 100 --reporter lcov npm run test-api","test":"npm run build && npm run format && npm run test-coverage"},"prettier":{"tabWidth":2,"useTabs":false,"singleQuote":true,"bracketSpacing":false,"semi":false,"trailingComma":"none"},"xo":{"prettier":true},"remarkConfig":{"plugins":["remark-preset-wooorm"]},"typeCoverage":{"atLeast":100,"detail":true,"strict":true,"ignoreCatch":true},"gitHead":"631c210b83bf4e3793f37332c0ac6c96d83e5f1d","bugs":{"url":"https://github.com/bernardjoseph/remark-tags/issues"},"homepage":"https://github.com/bernardjoseph/remark-tags#readme","_id":"@bernardjoseph/remark-tags@0.1.1","_nodeVersion":"19.8.1","_npmVersion":"9.5.1","dist":{"integrity":"sha512-sW1aR9c/pzpZLD76NgjzA9cjFJbwEmYaOmKRxJtp2C529mYxGo2PUZIGLPW1jYJOCEwDElf2vn5DfR0FsVd/rg==","shasum":"d5c9aa30f3701054bbfaf95641be49f453abe13f","tarball":"https://registry.npmjs.org/@bernardjoseph/remark-tags/-/remark-tags-0.1.1.tgz","fileCount":12,"unpackedSize":26504,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAtk9taSjSY9RyCRJtJRtb8Y5Ot5Cnbd1OSeIsbPwm3+AiA9C6tZL0/+mPzl3068AXj5rLvQ0CmCMVwI7fMQyN5O5A=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkJXp/ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqGUBAAjCl2tvJlBy8EKVtz5XYmMNUpXVHjVW6nI0+M/At+qKOMPqwb\r\niFhidAf8Yg6RIHY60wv1JXS847msCttHtkxMLoF4btcc2V6nsUBpWfI8wNB1\r\nw6xXeSSZ1E88qM/KH2SaYay6Tt5v9sh5DTw7m5RJQd5frogTwgMcqihuZyFj\r\nQL7Quvg1ZOqmWTpYBG8of9mjYWYKC9NYSYvCmai2wBPo23+x2aI0uE/SO4As\r\nJJH6O1XERRYhvuG0fQlVXWgfDKdzH9sNa9/wPZBDQ/uCTYTSttFOKKL38fu6\r\nYE6EOLnbq+ubMoh0COiSYduuOeaFfMfeBtP1VEWyqo9pJtJiLowm+0pLr3nN\r\nvnMd36lD0pkWTwJ2Jw4rAbsFMT1e/hltm3jA0Z3yAgoPt28Kv5WXY3i+dCo6\r\nVOcI67+9fJKluJZSDWDwIlDm2rZ3b9cB9toLn8folkDMwT7uovyYAsEOxz7S\r\nBLqywPayPI63/0vxB8RHAJWtTVWh9RbJFEbq+omCjFFT9a4Jepp8zcq3JAp/\r\nmTGfNO9f53SFP1WZorBfNrqff/9ZO/nStWIFjMpG3qQO2adOUceKteepMYE4\r\n/MA0yUWkUDeXLJbirE+vkzx8bmpIl8jPTV2Oc2zqDTPeV9YkyOlINxZT7ztU\r\nTnp8cqTdXyan0gfiT2wpOYtymaZIqt0FDls=\r\n=RaD/\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"bernardjoseph","email":"bernd.rellermeyer@t-online.de"},"directories":{},"maintainers":[{"name":"bernardjoseph","email":"bernd.rellermeyer@t-online.de"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/remark-tags_0.1.1_1680177791456_0.49701113893080073"},"_hasShrinkwrap":false}},"time":{"created":"2023-03-30T11:40:33.139Z","0.1.0":"2023-03-30T11:40:33.343Z","modified":"2023-03-30T12:03:11.781Z","0.1.1":"2023-03-30T12:03:11.621Z"},"maintainers":[{"name":"bernardjoseph","email":"bernd.rellermeyer@t-online.de"}],"description":"remark plugin to generate tags for Markdown documents","homepage":"https://github.com/bernardjoseph/remark-tags#readme","keywords":["tags","markdown","remark","unified"],"repository":{"type":"git","url":"git+https://github.com/bernardjoseph/remark-tags.git"},"author":{"name":"Bernd Rellermeyer"},"bugs":{"url":"https://github.com/bernardjoseph/remark-tags/issues"},"license":"MIT","readme":"# remark-tags\n\n**[remark][]** plugin to generate tags for Markdown documents.\n\n## Install\n\nThis package is [ESM\nonly](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c):\nNode 12+ is needed to use it and it must be `import`ed instead of `require`d.\n\n[npm][]:\n\n```sh\nnpm install remark-tags\n```\n\n## Use\n\nSay we have the following file, `example.md`:\n\n```markdown\n---\ntitle: An Example document\nauthor: N. N.\ndate: 2021-10-01\nkeywords:\n  - Markdown\n  - Tags\nnocite: |\n  @doe1999, @smith2004\n---\n\nSee :link[A text directive]{ref=Target}, :link[Another target]\nand @wadler1989 [sec. 1.3; and -@hughes1990, pp. 4].\n```\n\nAnd our module, `example.js`, looks as follows:\n\n```js\nimport {readSync} from 'to-vfile'\nimport {reporter} from 'vfile-reporter'\nimport {unified} from 'unified'\nimport remarkParse from 'remark-parse'\nimport remarkFrontmatter from 'remark-frontmatter'\nimport remarkDirective from 'remark-directive'\nimport remarkCitekey from '@bernardjoseph/remark-citekey'\nimport remarkTags from '@bernardjoseph/remark-tags'\n\nconst processor = unified()\n  .use(remarkParse)\n  .use(remarkFrontmatter, 'yaml')\n  .use(remarkDirective)\n  .use(remarkCitekey)\n  .use(remarkTags, {\n    kinds: {\n      yaml: {\n        title: {kind: 'title'},\n        author: {kind: 'author'},\n        date: {kind: 'date'},\n        keywords: {kind: 'keyword'},\n        nocite: {kind: 'nocite', nocite: true}\n      },\n      textDirective: {\n        link: {kind: 'link', ref: 'ref'}\n      },\n      citekeyId: {kind: 'cite'}\n    }\n  })\n\nconst tree = processor().parse(readSync('example.md'))\n\nprocessor().run(tree, (err, _, file) => {\n  if (err) throw err\n  console.error(reporter(file))\n  // @ts-expect-error\n  console.dir(file.data ? file.data.tags || [] : [], {depth: null})\n})\n```\n\nNow, running `node example` yields:\n\n```txt\nno issues found\n```\n\n```js\n[\n  { name: 'An Example document', kind: 'title', line: 1, column: 1 },\n  { name: 'N. N.', kind: 'author', line: 1, column: 1 },\n  { name: '2021-10-01', kind: 'date', line: 1, column: 1 },\n  { name: 'Markdown', kind: 'keyword', line: 1, column: 1 },\n  { name: 'Tags', kind: 'keyword', line: 1, column: 1 },\n  { name: 'doe1999', kind: 'nocite', line: 1, column: 1 },\n  { name: 'smith2004', kind: 'nocite', line: 1, column: 1 },\n  { name: 'Target', kind: 'link', line: 12, column: 5 },\n  { name: 'Another target', kind: 'link', line: 12, column: 42 },\n  { name: 'wadler1989', kind: 'cite', line: 13, column: 6 },\n  { name: 'hughes1990', kind: 'cite', line: 13, column: 34 }\n]\n```\n\nTags are generated for [YAML][] frontmatter entries, `link` text directives and\n[Pandoc-style citation keys][pandoc-citations].\nText directives are described in a [proposal for a syntax extension of the\nMarkdown language][directives-plugins-syntax].\nIn the proposal, they are called inline directives.\nIn the example above, text directives are used as links to other documents.\n\n## API\n\nThis package exports no identifiers.\nThe default export is `remarkTags`.\nThe package installs the executables `remark-tags` and `remark-tags-filter`.\n\n### `processor().use(remarkTags[, options])`\n\nConfigures `processor` to generate tags for Markdown documents, depending on the\nnode types of the nodes of the [abstract syntax trees][mdast] that are generated\nfor Markdown documents by the **[remark][]** parser.\nThe node types of the nodes for which tags are generated must be defined and\nconfigured by the [`kinds` option][options-kinds] of the `remark-tags` plugin.\n\nNodes of type `yaml` are generated for frontmatter entries by the `remark-tags`\nplugin if the frontmatter of the Markdown document is parsed by the\n[`remark-frontmatter`][remark-frontmatter] plugin.\nNodes of type `textDirective` are generated for text directives by the\n[`remark-directive`][remark-directive] plugin.\nIn addition, the following example `processor` generates tags for nodes of type\n`citekeyId`, which are generated for [Pandoc-style citation\nkeys][pandoc-citations] by the [`remark-citekey`][remark-citekey] plugin:\n\n```js\nimport {unified} from 'unified'\nimport remarkParse from 'remark-parse'\nimport remarkFrontmatter from 'remark-frontmatter'\nimport remarkDirective from 'remark-directive'\nimport remarkCitekey from '@bernardjoseph/remark-citekey'\nimport remarkTags from '@bernardjoseph/remark-tags'\n\nconst processor = unified()\n  .use(remarkParse)\n  .use(remarkFrontmatter, 'yaml')\n  .use(remarkDirective)\n  .use(remarkCitekey)\n  .use(remarkTags, {\n    kinds: {\n      yaml: {\n        title: {kind: 'title'},\n        author: {kind: 'author'},\n        date: {kind: 'date'},\n        keywords: {kind: 'keyword'},\n        nocite: {kind: 'nocite', nocite: true}\n      },\n      textDirective: {\n        link: {kind: 'link', ref: 'ref'}\n      },\n      citekeyId: {kind: 'cite'}\n    }\n  })\n```\n\nRunning `processor().run(processor().parse(file))` generates an array containing\na tag for each entry of the [YAML][] frontmatter whose key has an entry in the\nvalue of the `yaml` entry of the [`kinds` option][options-kinds], for each text\ndirective whose name has an entry in the value of the `textDirective` entry of\nthe [`kinds` option][options-kinds], and for each other node whose node type has\nan entry in the [`kinds` option][options-kinds] (which are the nodes of type\n`citekeyId` in the example `processor`).\nEach tag is an object with entries `name` for the identifier of the tag, `kind`\nfor the kind of the tag, and `line` and `column` for the source line and the\nsource column of the tag in the parsed document.\nThe array of tags is assigned to `file.data.tags`.\n\n###### `options.kinds`\n\nThe node types of the nodes for which tags are generated must be defined and\nconfigured by the [`kinds` option][options-kinds].\nThe value of the [`kinds` option][options-kinds] is an object whose keys are\nnode types and whose values are objects.\n\nThe value of a [`kinds` option][options-kinds] entry with key `yaml` is an\nobject mapping [YAML][] frontmatter keys to configuration objects.\nFor a frontmatter entry, tags are generated only if its key is one of the keys\nof the mapping.\nEach configuration object has a mandatory `kind` entry and an optional `nocite`\nentry.\nUnless the value of the optional `nocite` entry is `true`, tags are generated if\nthe value of the frontmatter entry is either a single [YAML][] block or flow\nscalar or a [YAML][] block or flow sequence of [YAML][] block or flow scalars.\nFor each [YAML][] scalar contained in value of such a frontmatter entry, a tag\nwhose identifier is the [YAML][] scalar and whose kind is the value of the\n`kind` entry of the configuration object is generated.\nIf the value of the optional `nocite` entry of the configuration object is\n`true`, tags are generated if the value of the frontmatter entry is a [YAML][]\nblock scalar.\nIn this case, the frontmatter entry is treated as a `nocite` entry in the sense\nof [Pandoc, containing citation keys of bibliographic references that are not\nexplicitly cited in the document but should occur in a bibliography for the\ndocument][including-uncited-items-in-the-bibliography].\nFor each [Pandoc-style citation key][pandoc-citations] that is contained in the\nvalue of such a frontmatter entry, a tag whose identifier is the citation key\nwithout the leading `@` and whose kind is the value of the `kind` entry of the\nconfiguration object is generated.\n\nThe value of a [`kinds` option][options-kinds] entry with key `textDirective` is\nan object mapping names of text directives to configuration objects.\nA tag is generated for each text directive whose name is one of the keys of the\nmapping.\nEach configuration object has a mandatory `kind` entry and an optional `ref`\nentry.\nThe kind of the generated tag is the value of the `kind` entry.\nThe value of the optional `ref` entry is the name of an optional text directive\nattribute.\nIf the text directive has an attribute with that name, the identifier of the\ngenerated tag is the value of that attribute.\nIf the text directive has no such attribute, or the configuration object of the\ntext directive has no `ref` entry, the identifier of the generated tag is the\ncontent of the text directive (which is a Markdown formatted string).\n\nThe value of a [`kinds` option][options-kinds] entry whose key is a node type\nother than `yaml` or `textDirective` is a configuration object with a mandatory\n`kind` entry.\nFor each node of the key node type, a tag whose identifier is the content of the\nnode and whose kind is the value of the `kind` entry of the configuration object\nis generated.\nThe example `processor` above, for instance, generates tags of kind `cite` for\nnodes of type `citekeyId`, whose identifiers are the citation keys of\n[Pandoc-style citations][pandoc-citations] without the leading `@`.\n\n###### `options.strict`\n\nThe `strict` option is a `boolean` option to restrict [Pandoc-style citation\nkeys][pandoc-citations] in [`nocite`][options-kinds] entries of the [YAML][]\nfrontmatter to ASCII.\nIts default value is `false`.\n\nThe `strict` option of the `remark-tags` plugin corresponds to the [`strict`\noption of the `remark-citekey` plugin][remark-citekey-option], which is passed\nto [`micromark-extension-citekey`][micromark-extension-citekey].\nIf the [`remark-citekey`][remark-citekey] plugin is imported, both `strict`\noptions should always have the same value.\n\n###### Caveat\n\nThe [`remark-frontmatter`][remark-frontmatter] plugin parses frontmatters as\nwhole blocks.\nTherefore, the `line` and the `column` entries of the tags that are generated\nfor frontmatter entries contain the starting line and column of the whole\nfrontmatter block instead of the starting lines and columns of the individual\nentries.\n\n### The `remark-tags` executable\n\nThe `remark-tags` executable reads the file name of a Markdown document from the\ncommand line and prints a JSON formatted array of tags on the `console`.\nIt uses the following **[unified-args][]** command line interface:\n\n```js\nargs({\n  processor: unified().use(defaultPreset).use(stringifyTags),\n  name: 'remark-tags',\n  description: 'Generate tags for Markdown documents',\n  version: '1.0.0',\n  pluginPrefix: 'remark',\n  extensions: ['md'],\n  packageField: 'remarkTagsConfig',\n  rcName: '.remarktagsrc',\n  ignoreName: '.remarktagsignore'\n})\n```\n\nWith default preset:\n\n```js\nimport remarkParse from 'remark-parse'\nimport remarkFrontmatter from 'remark-frontmatter'\nimport remarkDirective from 'remark-directive'\nimport remarkCitekey from '@bernardjoseph/remark-citekey'\nimport remarkTags from '@bernardjoseph/remark-tags'\n\nconst defaultPreset = {\n  plugins: [\n    remarkParse,\n    [remarkFrontmatter, 'yaml'],\n    remarkDirective,\n    remarkCitekey,\n    remarkTags\n  ]\n}\n```\n\nAnd compiler:\n\n```js\nexport default function stringifyTags() {\n  function compiler(_, file) {\n    const tags = file.data && file.data.tags\n    return JSON.stringify(tags) + os.EOL\n  }\n\n  Object.assign(this, {Compiler: compiler})\n}\n```\n\nThe `remark-tags` executable can be configured by a [configuration\nfile][unified-engine-configuration] with base name `remarktagsrc`.\nThe [ignore file][unified-engine-ignoring] is `.remarktagsignore`.\n\n### The `remark-tags-filter` executable\n\nThe `remark-tags-filter` executable reads file names of Markdown documents from\n`process.stdin`, one file name per line, and prints JSON formatted arrays of\ntags on the `console`, one array per file.\nIt uses the same processor as the [`remark-tags`\nexecutable][the-remark-tags-executable] and can be configured by a\n[configuration file][unified-engine-configuration] with base name\n`remarktagsrc`.\n\nAn example [configuration file][unified-engine-configuration] looks as follows:\n\n```js\n{\n  \"plugins\": {\n    \"remark-tags\": {\n      \"strict\": true,\n      \"kinds\": {\n        \"yaml\": {\n          \"title\": {\"kind\": \"title\"},\n          \"author\": {\"kind\": \"author\"},\n          \"date\": {\"kind\": \"date\"},\n          \"keywords\": {\"kind\": \"keyword\"},\n          \"nocite\": {\"kind\": \"nocite\", \"nocite\": true}\n        },\n        \"textDirective\": {\n          \"link\": {\"kind\": \"link\", \"ref\": \"ref\"}\n        },\n        \"citekeyId\": {\"kind\": \"cite\"}\n      }\n    },\n    \"remark-citekey\": {\n      \"strict\": true\n    }\n  }\n}\n```\n\n## Related\n\n*   [`unifiedjs/unified`][unified]\n    — interface for processing text using syntax trees\n*   [`remarkjs/remark`][remark]\n    — markdown processor powered by plugins\n*   [`remarkjs/remark-parse`][remark-parse]\n    — parses Markdown to **[mdast][]** syntax trees\n*   [`remarkjs/remark-frontmatter`][remark-frontmatter]\n    — plugin to support frontmatter\n*   [`remarkjs/remark-directive`][remark-directive]\n    — plugin to support the [generic directives\n    proposal][directives-plugins-syntax]\n*   [`@bernardjoseph/remark-citekey`][remark-citekey]\n    — plugin to support [Pandoc-style citation keys][pandoc-citations]\n\n## Contribute\n\nSee [`contributing.md` in `micromark/.github`][contributing] for ways to get\nstarted.\nSee [`support.md`][support] for ways to get help.\n\nThis project has a [code of conduct][coc].\nBy interacting with this repository, organization, or community you agree to\nabide by its terms.\n\n## License\n\n[MIT][license] © Bernd Rellermeyer\n\n<!-- Definitions -->\n\n[npm]: https://docs.npmjs.com/cli/install\n\n[unified]: https://github.com/unifiedjs/unified\n\n[unified-engine-configuration]: https://github.com/unifiedjs/unified-engine/blob/main/doc/configure.md\n\n[unified-engine-ignoring]: https://github.com/unifiedjs/unified-engine/blob/main/doc/ignore.md\n\n[unified-args]: https://github.com/unifiedjs/unified-args\n\n[remark]: https://github.com/remarkjs/remark\n\n[remark-parse]: https://github.com/remarkjs/remark/tree/main/packages/remark-parse\n\n[remark-frontmatter]: https://github.com/remarkjs/remark-frontmatter\n\n[remark-directive]: https://github.com/remarkjs/remark-directive\n\n[remark-citekey]: https://github.com/bernardjoseph/remark-citekey\n\n[remark-citekey-option]: https://github.com/bernardjoseph/remark-citekey#optionsstrict\n\n[mdast]: https://github.com/syntax-tree/mdast\n\n[micromark-extension-citekey]: https://github.com/bernardjoseph/micromark-extension-citekey\n\n[yaml]: https://yaml.org\n\n[pandoc-citations]: https://pandoc.org/MANUAL.html#citations\n\n[including-uncited-items-in-the-bibliography]: https://pandoc.org/MANUAL.html#including-uncited-items-in-the-bibliography\n\n[directives-plugins-syntax]: https://talk.commonmark.org/t/generic-directives-plugins-syntax/444\n\n[contributing]: https://github.com/unifiedjs/.github/blob/HEAD/contributing.md\n\n[support]: https://github.com/unifiedjs/.github/blob/HEAD/support.md\n\n[coc]: https://github.com/unifiedjs/.github/blob/HEAD/code-of-conduct.md\n\n[license]: https://github.com/micromark/micromark/blob/main/license\n\n[options-kinds]: #optionskinds\n\n[the-remark-tags-executable]: #the-remark-tags-executable\n","readmeFilename":"readme.md"}