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.