This repo contains raw data for Project Fugu 🐡 APIs. The data is available
in two formats: pattern.js
and pattern.mjs
.
The raw data in this repository comes from a
Google spreadsheet
that is published as a
JSON file.
The index.js
script fetches this data, prettifies it, and saves it locally in
a module and in a no-module variant.
You can trigger the data fetch process described above by running the start
script:
npm start
-
For the module version:
import patterns from './patterns.mjs'; console.log(patterns.WebBluetooth); /* { regEx: /navigator\.bluetooth\.requestDevice\s*\(/g, where: 'JavaScript', supported: (async () => 'bluetooth' in navigator)(), featureDetection: `(async () => 'bluetooth' in navigator)()`, } */
-
For the no-module version (for example to use it in a service worker):
importScripts('patterns.js'); console.log(patterns.WebBluetooth); /* { regEx: /navigator\.bluetooth\.requestDevice\s*\(/g, where: 'JavaScript', supported: (async () => 'bluetooth' in navigator)(), featureDetection: `(async () => 'bluetooth' in navigator)()`, } */
Each API is represented as an object with the following properties:
regEx
: A regular expression that you can use to detect the API of interest in source code when you do static source code analysis.where
: The resource type where the regular expression needs to match in order to be valid. Either"JavaScript"
or"Web App Manifest"
.supported
: A function that returns a promise that resolves withtrue
,false
, orundefined
, dependent on whether the API is supported or not (undefined
means no feature detection method exists).featureDetection
: The source code of the feature detection method, so you can use it in aneval()
for example.
This data is used in the following projects:
- The
Capabilities report of
the HTTP Almanac in the file
custom_metrics/fugu-apis.js
. - The
Project Fugu 🐡 API Detector
browser extension in the files
patternsFunc.js
andbackground.js
.
Apache 2.0.