mirror of
https://github.com/GoogleChrome/chrome-extensions-samples.git
synced 2026-03-26 13:19:49 +07:00
* init project * init .gitignore * Add main scripts * Add prefetch script * Add extension-apis.json * Add README.md * Update comments * Add newline to .gitignore * Update type definition * Update extension api json loading. * Update README.md * Update deps * Pin deps versions * Update extension-apis.json * Update prefetch script * Update script * Remove type definitions prefix * Add comment to auto generated json * Split utils * Update types * Add manifest utils * refactor * Reject if there is a babel error. * Add parallel support * Remove redundant import * loadExtensionApis execute synchronously * Add test deps * Fix unexpected result * Add test scripts * Update type definition * Add start function * Rename api variable * Fix test * Update getApiType method * Remove singularize * Fix loadExtensionApis return signature * Remove parallel controller * Update type definition * Add comments * Update types * Update api detector * Fix api test * Add more test cases * Remove `$special` key * Fix typo * Simplify code * Rename `apiType` to `type` * Add warning if no api found * Rename variable * Update getFullMemberExpression * Remove the special case for `chrome.storage`. * Add getManifest function * Revoke changes * Fix crash caused by incorrect folder detection * Remove redundant import * Check property type with typedoc * Add action * Fix wrong node version * Update code * Rename variable * Remove unnecessary Map * Update README * Fix typo * Remove unnecessary output * Add comments * Remove the judgment on storage API. * Update test case * Update comments * Extract `getAllJsFile()` into the filesystem util * Explain how to run the tests in README * Pin deps * Extract variable * Extract `isDirectory()` into the filesystem util * Remove assertion * Update the parameter of `extractApiCalls()` * Update tests * Remove action
3.4 KiB
3.4 KiB
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"
}
]
}
]