mirror of
https://github.com/GoogleChrome/chrome-extensions-samples.git
synced 2026-03-26 13:19:49 +07:00
* Partial fixes for sample list generator A number of fixes for the sample list generator: - Removes a comment from one of our manifest files, as we don't currently support JSONC. - Ignores the `node_modules` folder since we have recently added some AI samples with a build step. - Adds the `aiOriginTrial` API to the list of recognised APIs. - Updates `extension-apis.json` with the latest data from the `chrome-types` package. Updating recognised extension APIs still requires access to a non-existent storage bucket, so this does not fully fix the process. * Fix linter issue
Sample List Generator
Overview
It's a script that generates ./extension-samples.json with the list of all the samples available. Currently, this JSON will be provided to developer.chrome.com for generating a list page containing all the samples. This allows developers to quickly find the sample they want to reference.
How to use
Install dependencies
npm install
Run prefetch script (optional)
The prefetch script will generate a list of all the available extension apis on developer.chrome.com and save it to ./extension-apis.json.
The file ./extension-apis.json will be committed so you don't need to run this script unless you want to update the list.
npm run prepare-chrome-types
Run the generator
npm start
Run the tests
npm test
Types
type ApiTypeResult = 'event' | 'method' | 'property' | 'type' | 'unknown';
interface ApiItem {
type: ApiTypeResult;
namespace: string;
propertyName: string;
}
interface SampleItem {
type: 'API_SAMPLE' | 'FUNCTIONAL_SAMPLE';
name: string;
title: string;
description: string;
repo_link: string;
apis: ApiItem[];
permissions: string[];
}
// the type of extension-samples.json file is SampleItem[]
Example
Here is an example of the generated extension-samples.json file:
[
{
"type": "API_SAMPLE",
"name": "alarms",
"title": "Alarms API Demo",
"description": "",
"repo_link": "https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/api-samples/alarms",
"permissions": ["alarms"],
"apis": [
{
"type": "event",
"namespace": "runtime",
"propertyName": "onInstalled"
},
{
"type": "event",
"namespace": "action",
"propertyName": "onClicked"
},
{
"type": "event",
"namespace": "alarms",
"propertyName": "onAlarm"
},
{
"type": "type",
"namespace": "runtime",
"propertyName": "OnInstalledReason"
},
{
"type": "method",
"namespace": "alarms",
"propertyName": "create"
},
{
"type": "method",
"namespace": "tabs",
"propertyName": "create"
},
{
"type": "method",
"namespace": "alarms",
"propertyName": "clear"
},
{
"type": "method",
"namespace": "alarms",
"propertyName": "clearAll"
},
{
"type": "method",
"namespace": "alarms",
"propertyName": "getAll"
}
]
},
{
"type": "FUNCTIONAL_SAMPLE",
"name": "tutorial.getting-started",
"title": "Getting Started Example",
"description": "Build an Extension!",
"repo_link": "https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/functional-samples/tutorial.getting-started",
"permissions": ["storage", "activeTab", "scripting"],
"apis": [
{
"type": "event",
"namespace": "runtime",
"propertyName": "onInstalled"
},
{
"type": "property",
"namespace": "storage",
"propertyName": "sync"
},
{
"type": "method",
"namespace": "tabs",
"propertyName": "query"
},
{
"type": "method",
"namespace": "scripting",
"propertyName": "executeScript"
}
]
}
]