tbext-manifest-schema
v0.29.0
Published
JSON schema for Thunderbird Extension manifest.
Downloads
24
Maintainers
Readme
tbext-manifest-schema
- JSON Schema for Thunderbird extension.
- This package does not work much as addons-linter does for Firefox Addons.
- status: raughly O.K.
how to use
As for VS Code's workspace config, such as foo.code-workspace
{
"settings": {
"json.schemas": [
{
"fileMatch": ["*/path/to/manifest.json"],
"url": "./path/to/tbext.min.json",
}
]
}
}
how to make JSON Schema file
$ npm run build -- --mozilla-repo /path/to/mozilla --comm-repo /path/to/comm
(At 2019-04-11) You will see following error messages, but no problem.
> [email protected] build X:\path\to\tbext-manifest-schema
> node build.js "--mozilla-repo" "x:/repository/mozilla-central" "--comm-repo" "x:/repository/mozilla-central/comm"
(API: commAPI, Schema Name: commands): Error: ENOENT: no such file or directory, open 'x:\repository\mozilla-central\comm\mail\components\extensions\schemas\commands.json'
(API: commAPI, Schema Name: geckoProfiler): Error: ENOENT: no such file or directory, open 'x:\repository\mozilla-central\comm\toolkit\components\extensions\schemas\geckoProfiler.json'
(API: commAPI, Schema Name: pkcs11): Error: ENOENT: no such file or directory, open 'x:\repository\mozilla-central\comm\mail\components\extensions\schemas\pkcs11.json'
matches
name
version
error on optional: default_locale
Known Issue
//
comment
One-line comment is allowed (only Firefox?), but I can not specify it in the JSON Scheme.
default_locale
For default_locale
, to be mandatory or prohibited is conditional.
Its condition cannot be described in this JSON Schema, because it involves the existence of _locales
directory.
Warning "Matches multiple schemas when only one must validate"
VS Code's validator does not discriminate objects inside oneOf
and result in that warning on background
or so.
{
"two different subschema cannot be discriminated."
"background": {
"oneOf": [
{
"type": "object",
"properties": {
"page": {
"type": "number"
}
}
},
{
"type": "object",
"properties": {
"scripts": {
"type": "array",
"items": {
"$ref": "#/definitions/ExtensionURL"
}
},
"persistent": {
"$ref": "#/definitions/PersistentBackgroundProperty"
}
}
}
]
}
}
c.f. Combining schemas — Understanding JSON Schema 7.0 documentation
format
may result in error or warning
JSON Schema Document says "JSON Schema implementations are not required to implement this part of the specification, and many of them do not".
As for VS Code, validator seems to do nothing for format
.
So, this schema currently does nothing for it, and non-standard format
such as strictRelativeUrl
remains in.
c.f. string — Understanding JSON Schema 7.0 documentation
Note for implementation
$id
does not work
JSON Schema Document says "This functionality isn’t currently supported by the Python jsonschema library".
I do not know about VS Code's JSON Schema Validator, but anyway it does not handle $id
.
c.f. Structuring a complex schema — Understanding JSON Schema 7.0 documentation
'match mode (?i)' of RegExp
For the case of string
type, it can have pattern
keyword.
JSON Schema does not handle it, and that results in RegExp error.
Reference
some useful staff.
Thunderbird WebExtension APIs — Thunderbird WebExtensions latest documentation
API Implementation Basics — Mozilla Source Tree Docs 68.0a1 documentation
For
experiments
.API Schemas — Mozilla Source Tree Docs 68.0a1 documentation
This says "Refer to the documentation and examples at the JSON Schema site for details on how these items are defined in a schema". But some items in API schema (e.g.
choices
) does not match with specs of all versions like 0.4 or 0.7 currently (2019 March) on that site.mozilla-central (or mozilla-beta or so)'s
toolkit/components/extensions/Schemas.jsm
This module handles
preprocess
,optional
or so.
License
MPL-2.0.
npm package includes json files. These contains contents which come from
json schema files of comm-central repository.
Some ones are under 3-Clause BSD License, others are under MPL-2.0 License.
Both are in License
directory.
Release Notes
2019-03-21 0.0.1
2019-03-27 0.1.0 geckoProfiler
2019-04-10 0.2.0 New property:
dark_theme
2019-04-16 0.3.0 New property:
chrome_settings_overrides
2019-04-26 0.4.0 New permission:
accountsFolders
2019-05-09 0.5.0 Removed:
icons
ofThemeType
15487692019-05-20 0.5.1 fix: many permissions.
tabs
,experiments
or so.2019-05-22 0.6.0 New
type
property oflegacy
2019-06-15 0.7.0 New
edge
property ofbrowser_specific_settings
15423512019-09-27 0.8.0
2019-10-25 0.9.0 Removal:
settingsUrl
ofCloudFile
API 15814962019-11-04 0.10.0 Add:
content_security_policy
may be{ "extension_pages":xxxx, "content_scripts":xxxx }
15816092019-11-08 0.11.0 New property:
l10n_resources
14578652020-01-31 0.12.0 New property:
isolated_world
ofcontent_security_policy
15942322020-02-09 0.13.0 New permission:
compose
16135622020-02-11 0.14.0 Removal:
legacy
API 16142372020-03-13 NO RELEASE
2020-10-26 0.15.0 very many changes from April To October.
2020-11-28 0.16.0 New property:
default_label
ofbrowser_action
,compose_action
, andmessage_display_action
15834782021-01-23 Removal:
content_scripts
andisolated_world
properties ofcontent_security_policy
15942342021-02-03 0.17.1 fix: some permissions are not included, e.g.
activeTab
2021-02-06 No Update
- change:
nativeMessaging
became optional permission 1630415
- change:
2021-03-18 0.18.0 New:
ftp
forprotocol_handlers
2021-04-21 No Update
- change: docstring of
toolbar_field_separator
ofcolors
ofThemeType
1703590
- change: docstring of
2021-04-24 0.19.0 New:
matrix
scheme ofprotocol
ofProtocolHandler
16880302021-04-28 0.20.0 New:
browser_action.type
,compose_action.type
,message_display_action.type
17058672021-04-29 No Update: Removal: 0.20.0
2021-05-02 No Update
- Change:
content_security_policy
has version specs(max_manifest_version
andmin...
), but currently this Schema does not handle them. Maybe draft 7'sif-then-else
resolves this. 1696043 - Note: At
mozilla-central
,chrome_settings_overrides
-search_provider.favicon_url
can be "strictRelativeUrl" on ManifestV3. This has no effect because JSON Schema meta-spec (draft 7, and its validators) does not know Mozilla's "format"s. And oncomm
, there is its ownchrome_settings_overrides.json
, so no effect. 1697059
- Change:
2021-05-11 0.21.0 New:
browser_style
ofcloud_file
15230942021-05-15 0.22.0 New: object
{ resources: [string], matches: [string] }
array forweb_accessible_resources
(ManifestV3) 1696580 16973342021-05-22 No Update: default value of
browser_style
changed fromtrue
tofalse
. 17120582021-05-28 0.23.0 New:
compose.send
permission 16996722021-06-18 0.24.0 New:
accountsIdentities
permission foridentity
API. 16426902021-06-25 0.25.0 New:
extensions
array forweb_accessible_resources
(ManifestV3) 17111682021-07-08 0.26.0 New:
messagesDelete
permission formessages
API 16161142021-07-08 0.27.0 Removed(0.25.0):
extensions
array forweb_accessible_resources
(ManifestV3) 17111682021-07-13 No Update Modified:
accountsFolders
permission was removed fromfolders
namespace'spermissions
array, and added topermissions
ofcreate()
,rename()
,delete()
offolders
API. 15204272021-07-26 0.28.0 New:
host_permissions
for ManifestV3 16933852021-07-27 0.29.0 New:
default_area
property ofbrowser_action
;maintoolbar
ortabstoolbar
. 1722039