# @ampproject/toolbox-validator-rules

> A library that helps query AMP Validator rules

Latest version **2.10.1** (published 2024-06-14) · Apache-2.0 license · 0 weekly downloads

## Install

```sh
npm install @ampproject/toolbox-validator-rules
pnpm add @ampproject/toolbox-validator-rules
yarn add @ampproject/toolbox-validator-rules
bun add @ampproject/toolbox-validator-rules
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 2.10.1 |
| Published | 2024-06-14 |
| First published | 2019-07-11 |
| Weekly downloads | 0 |
| License | Apache-2.0 |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 1 |
| Unpacked size | 12 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 459 |
| Author | AMPHTML Team |
| Maintainers | ampproject-admin, kristoferbaxter, jridgewell, choumx, amp-toolbox, fstanis, erwinmombay, samouri, caroqliu, rsimha, dvoytenko, patrickkettner, alanorozco, kdwan, ampprojectbot, esth |
| Keywords | amp |

## Links

- npm: https://www.npmjs.com/package/@ampproject/toolbox-validator-rules
- Repository: https://github.com/ampproject/amp-toolbox
- Homepage: https://github.com/ampproject/amp-toolbox/tree/main/packages/validator-rules
- Issues: https://github.com/ampproject/amp-toolbox/issues
- npm.io page: https://npm.io/package/@ampproject/toolbox-validator-rules

## Dependencies (1)

- [cross-fetch](https://npm.io/package/cross-fetch.md) 3.1.5

## Recent versions

- 2.10.1 (latest) — 2024-06-14
- 3.0.0-canary.2 (canary) — 2022-01-11
- 2.7.1-alpha.0 (alpha) — 2020-12-01
- 1.1.0-beta.0 (beta) — 2019-08-29
- 2.10.0 — 2024-06-13
- 2.9.0 — 2022-06-23
- 2.8.0 — 2021-05-31
- 2.8.0-canary.9 — 2021-03-22
- 2.8.0-canary.0 — 2021-02-12
- 2.7.4 — 2020-12-23
- 2.7.2 — 2020-12-15
- 2.7.1 — 2020-12-02
- 2.5.4 — 2020-06-22
- 2.3.0 — 2020-04-15
- 2.2.0 — 2020-04-03
- … 14 more at https://npm.io/package/@ampproject/toolbox-validator-rules/versions

## README

# AMP-Toolbox Validator Rules

[![npm version](https://badge.fury.io/js/%40ampproject%2Ftoolbox-validator-rules.svg)](https://badge.fury.io/js/%40ampproject%2Ftoolbox-validator-rules)

Queries published AMP Validator rules and extracts information about required
markup and attributes for all AMP formats.

## Usage

Install via:

```
$ npm install @ampproject/toolbox-validator-rules
```

### Including the Module

#### ES Module (Browser)

```javascript
import validatorRules from '@ampproject/toolbox-validator-rules';
```

#### CommonJs (Node)

```javascript
const validatorRules = require('@ampproject/toolbox-validator-rules');
```

### Using the module

```javascript
  // Loads the validator rules remotely with default options
  const rules = await validatorRules.fetch();


  // The raw unprocessed rules
  console.log(rules.raw);

  // All tags, combined with their respective attribute lists
  console.log(rules.tags);

  // All extensions
  console.log(rules.extensions);

  // Get all tag names used in AMP for Email
  // The supported formats are AMP, AMP4EMAIL, AMP4ADS and ACTIONS
  const tags = rules.getTagsForFormat('AMP4EMAIL');

  // Display their names
  console.log(tags.map(tag => tag.tagName));

  // Get information about an extension
  const ext = rules.getExtension('AMP4EMAIL', 'amp-carousel');

  // Display supported versions
  console.log(ext.versions);
```

### Format of rules

The rules used closely follow the proto definitions from [validator.proto](https://github.com/ampproject/amphtml/blob/master/validator/validator.proto).

Specifically:

-   The `raw` property is unprocessed [ValidatorRules](https://github.com/ampproject/amphtml/blob/master/validator/validator.proto#L643), the same format used by `https://cdn.ampproject.org/v0/validator.json`
-   The result of `getTagsForFormat` and the `tags` property is a list of [TagSpec](https://github.com/ampproject/amphtml/blob/b892d81467594cab5473c803e071af5108f834a6/validator/validator.proto#L463)
-   The result of `getExtension` is [ExtensionSpec](https://github.com/ampproject/amphtml/blob/b892d81467594cab5473c803e071af5108f834a6/validator/validator.proto#L388) with the `htmlFormat` field from `TagSpec`
-   The `extensions` property a list of [ExtensionSpec](https://github.com/ampproject/amphtml/blob/b892d81467594cab5473c803e071af5108f834a6/validator/validator.proto#L388) with the `htmlFormat` field from `TagSpec`
-   The `errors` property combines [ErrorFormat](https://github.com/ampproject/amphtml/blob/b892d81467594cab5473c803e071af5108f834a6/validator/validator.proto#L874) and [ErrorSpecificity](https://github.com/ampproject/amphtml/blob/b892d81467594cab5473c803e071af5108f834a6/validator/validator.proto#L869)

### Options

`fetch` optionally accepts an options object allowing you to customize its
behaviour.

The following options are supported:

   * `noCache`: true to always fetch latest rules (by default, subsequent calls to `fetch` reuse the same result).
   * `rules`: object to use locally specified rules instead of fetching them from the AMP CDN.
   * `url`: override the URL where validator rules are fetched from.
   * `source`: one of `'local'` (load rules from local file named "validator.json"), `'remote'` (fetch rules from CDN) or `'auto'` which is the default (tries looking for the local file first, then tries to fetch from CDN).

Example:

```
validatorRules.fetch({
  noCache: true,
  source: 'remote'
});
```

---
_Source: https://npm.io/package/@ampproject/toolbox-validator-rules · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
