tbext-manifest-schema v0.29.0
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.
> tbext-manifest-schema@0.2.0 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_localeKnown 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,- optionalor 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: iconsofThemeType1548769
- 2019-05-20 0.5.1 fix: many permissions. tabs,experimentsor so.
- 2019-05-22 0.6.0 New typeproperty oflegacy
- 2019-06-15 0.7.0 New edgeproperty ofbrowser_specific_settings1542351
- 2019-09-27 0.8.0
- 2019-10-25 0.9.0 Removal: settingsUrlofCloudFileAPI 1581496
- 2019-11-04 0.10.0 Add: content_security_policymay be{ "extension_pages":xxxx, "content_scripts":xxxx }1581609
- 2019-11-08 0.11.0 New property: l10n_resources1457865
- 2020-01-31 0.12.0 New property: isolated_worldofcontent_security_policy1594232
- 2020-02-09 0.13.0 New permission: compose1613562
- 2020-02-11 0.14.0 Removal: legacyAPI 1614237
- 2020-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_labelof- browser_action,- compose_action, and- message_display_action1583478
- 2021-01-23 Removal: - content_scriptsand- isolated_worldproperties of- content_security_policy1594234
- 2021-02-03 0.17.1 fix: some permissions are not included, e.g. - activeTab
- 2021-02-06 No Update - change: nativeMessagingbecame optional permission 1630415
 
- change: 
- 2021-03-18 0.18.0 New: - ftpfor- protocol_handlers
- 2021-04-21 No Update - change: docstring of toolbar_field_separatorofcolorsofThemeType1703590
 
- change: docstring of 
- 2021-04-24 0.19.0 New: - matrixscheme of- protocolof- ProtocolHandler1688030
- 2021-04-28 0.20.0 New: - browser_action.type,- compose_action.type,- message_display_action.type1705867
- 2021-04-29 No Update: Removal: 0.20.0 
- 2021-05-02 No Update - Change: content_security_policyhas version specs(max_manifest_versionandmin...), but currently this Schema does not handle them. Maybe draft 7'sif-then-elseresolves this. 1696043
- Note: At mozilla-central,chrome_settings_overrides-search_provider.favicon_urlcan 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_styleof- cloud_file1523094
- 2021-05-15 0.22.0 New: object - { resources: [string], matches: [string] }array for- web_accessible_resources(ManifestV3) 1696580 1697334
- 2021-05-22 No Update: default value of - browser_stylechanged from- trueto- false. 1712058
- 2021-05-28 0.23.0 New: - compose.sendpermission 1699672
- 2021-06-18 0.24.0 New: - accountsIdentitiespermission for- identityAPI. 1642690
- 2021-06-25 0.25.0 New: - extensionsarray for- web_accessible_resources(ManifestV3) 1711168
- 2021-07-08 0.26.0 New: - messagesDeletepermission for- messagesAPI 1616114
- 2021-07-08 0.27.0 Removed(0.25.0): - extensionsarray for- web_accessible_resources(ManifestV3) 1711168
- 2021-07-13 No Update Modified: - accountsFolderspermission was removed from- foldersnamespace's- permissionsarray, and added to- permissionsof- create(),- rename(),- delete()of- foldersAPI. 1520427
- 2021-07-26 0.28.0 New: - host_permissionsfor ManifestV3 1693385
- 2021-07-27 0.29.0 New: - default_areaproperty of- browser_action;- maintoolbaror- tabstoolbar. 1722039
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
5 years ago
5 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago