webext-schema 5.4.0 → 5.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -905,6 +905,9 @@ export const highlightTab = async (index, windowId) => {
905
905
  if (!(Array.isArray(index) || Number.isInteger(index))) {
906
906
  throw new TypeError(`Expected Number or Array but got ${getType(index)}.`);
907
907
  }
908
+ if (Number.isInteger(index)) {
909
+ index = [index];
910
+ }
908
911
  if (!Number.isInteger(windowId)) {
909
912
  windowId = windows.WINDOW_ID_CURRENT;
910
913
  }
package/package.json CHANGED
@@ -17,24 +17,24 @@
17
17
  "commander": "^12.1.0",
18
18
  "decamelize": "^6.0.0",
19
19
  "json5": "^2.2.3",
20
- "sinon": "^18.0.0"
20
+ "sinon": "^19.0.2"
21
21
  },
22
22
  "devDependencies": {
23
23
  "@types/firefox-webext-browser": "^120.0.4",
24
- "@types/node": "^20.14.10",
24
+ "@types/node": "^22.5.5",
25
25
  "@types/sinon": "^17.0.3",
26
26
  "c8": "^10.1.2",
27
27
  "chai": "^5.1.1",
28
28
  "eslint": "^8.57.0",
29
29
  "eslint-config-standard": "^17.1.0",
30
- "eslint-plugin-import": "^2.29.1",
31
- "eslint-plugin-jsdoc": "^48.6.0",
30
+ "eslint-plugin-import": "^2.30.0",
31
+ "eslint-plugin-jsdoc": "^50.2.4",
32
32
  "eslint-plugin-regexp": "^2.6.0",
33
- "eslint-plugin-unicorn": "^54.0.0",
34
- "mocha": "^10.6.0",
33
+ "eslint-plugin-unicorn": "^55.0.0",
34
+ "mocha": "^10.7.3",
35
35
  "npm-run-all": "^4.1.5",
36
- "typescript": "^5.5.3",
37
- "undici": "^6.19.2"
36
+ "typescript": "^5.6.2",
37
+ "undici": "^6.19.8"
38
38
  },
39
39
  "scripts": {
40
40
  "build": "npm run tsc && npm run lint && npm run test",
@@ -54,5 +54,5 @@
54
54
  "update-mail": "node index update --channel=mail -i",
55
55
  "update-release": "node index update --channel=release -i"
56
56
  },
57
- "version": "5.4.0"
57
+ "version": "5.4.2"
58
58
  }
@@ -4445,7 +4445,7 @@
4445
4445
  },
4446
4446
  "openerTabId": {
4447
4447
  "type": "integer",
4448
- "minimum": 0,
4448
+ "minimum": -1,
4449
4449
  "optional": true,
4450
4450
  "description": "The ID of the tab that opened this tab, if any. This property is only present if the opener tab still exists."
4451
4451
  },
@@ -4989,7 +4989,7 @@
4989
4989
  },
4990
4990
  "openerTabId": {
4991
4991
  "type": "integer",
4992
- "minimum": 0,
4992
+ "minimum": -1,
4993
4993
  "optional": true,
4994
4994
  "description": "The ID of the tab that opened this tab. If specified, the opener tab must be in the same window as the newly created tab."
4995
4995
  },
@@ -5203,7 +5203,7 @@
5203
5203
  },
5204
5204
  "openerTabId": {
5205
5205
  "type": "integer",
5206
- "minimum": 0,
5206
+ "minimum": -1,
5207
5207
  "optional": true,
5208
5208
  "description": "The ID of the tab that opened this tab. If specified, the opener tab must be in the same window as this tab."
5209
5209
  },
@@ -5353,7 +5353,7 @@
5353
5353
  },
5354
5354
  "openerTabId": {
5355
5355
  "type": "integer",
5356
- "minimum": 0,
5356
+ "minimum": -1,
5357
5357
  "optional": true,
5358
5358
  "description": "The ID of the tab that opened this tab. If specified, the opener tab must be in the same window as this tab."
5359
5359
  },
@@ -17437,7 +17437,7 @@
17437
17437
  ]
17438
17438
  },
17439
17439
  {
17440
- "id": "StorageAreaSync",
17440
+ "id": "StorageAreaWithUsage",
17441
17441
  "type": "object",
17442
17442
  "functions": [
17443
17443
  {
@@ -17634,7 +17634,7 @@
17634
17634
  ],
17635
17635
  "properties": {
17636
17636
  "sync": {
17637
- "$ref": "StorageAreaSync",
17637
+ "$ref": "StorageAreaWithUsage",
17638
17638
  "description": "Items in the <code>sync</code> storage area are synced by the browser.",
17639
17639
  "properties": {
17640
17640
  "QUOTA_BYTES": {
@@ -17688,8 +17688,13 @@
17688
17688
  "allowedContexts": [
17689
17689
  "devtools"
17690
17690
  ],
17691
- "$ref": "StorageArea",
17692
- "description": "Items in the <code>session</code> storage area are kept in memory, and only until the either browser or extension is closed or reloaded."
17691
+ "$ref": "StorageAreaWithUsage",
17692
+ "description": "Items in the <code>session</code> storage area are kept in memory, and only until the either browser or extension is closed or reloaded.",
17693
+ "properties": {
17694
+ "QUOTA_BYTES": {
17695
+ "description": "The maximum amount of data (in bytes, currently at 10MB) that can be stored in session storage, as measured by the StructuredCloneHolder of every value plus every key's length."
17696
+ }
17697
+ }
17693
17698
  }
17694
17699
  }
17695
17700
  }
@@ -4445,7 +4445,7 @@
4445
4445
  },
4446
4446
  "openerTabId": {
4447
4447
  "type": "integer",
4448
- "minimum": 0,
4448
+ "minimum": -1,
4449
4449
  "optional": true,
4450
4450
  "description": "The ID of the tab that opened this tab, if any. This property is only present if the opener tab still exists."
4451
4451
  },
@@ -4989,7 +4989,7 @@
4989
4989
  },
4990
4990
  "openerTabId": {
4991
4991
  "type": "integer",
4992
- "minimum": 0,
4992
+ "minimum": -1,
4993
4993
  "optional": true,
4994
4994
  "description": "The ID of the tab that opened this tab. If specified, the opener tab must be in the same window as the newly created tab."
4995
4995
  },
@@ -5203,7 +5203,7 @@
5203
5203
  },
5204
5204
  "openerTabId": {
5205
5205
  "type": "integer",
5206
- "minimum": 0,
5206
+ "minimum": -1,
5207
5207
  "optional": true,
5208
5208
  "description": "The ID of the tab that opened this tab. If specified, the opener tab must be in the same window as this tab."
5209
5209
  },
@@ -5353,7 +5353,7 @@
5353
5353
  },
5354
5354
  "openerTabId": {
5355
5355
  "type": "integer",
5356
- "minimum": 0,
5356
+ "minimum": -1,
5357
5357
  "optional": true,
5358
5358
  "description": "The ID of the tab that opened this tab. If specified, the opener tab must be in the same window as this tab."
5359
5359
  },
@@ -17437,7 +17437,7 @@
17437
17437
  ]
17438
17438
  },
17439
17439
  {
17440
- "id": "StorageAreaSync",
17440
+ "id": "StorageAreaWithUsage",
17441
17441
  "type": "object",
17442
17442
  "functions": [
17443
17443
  {
@@ -17634,7 +17634,7 @@
17634
17634
  ],
17635
17635
  "properties": {
17636
17636
  "sync": {
17637
- "$ref": "StorageAreaSync",
17637
+ "$ref": "StorageAreaWithUsage",
17638
17638
  "description": "Items in the <code>sync</code> storage area are synced by the browser.",
17639
17639
  "properties": {
17640
17640
  "QUOTA_BYTES": {
@@ -17688,8 +17688,13 @@
17688
17688
  "allowedContexts": [
17689
17689
  "devtools"
17690
17690
  ],
17691
- "$ref": "StorageArea",
17692
- "description": "Items in the <code>session</code> storage area are kept in memory, and only until the either browser or extension is closed or reloaded."
17691
+ "$ref": "StorageAreaWithUsage",
17692
+ "description": "Items in the <code>session</code> storage area are kept in memory, and only until the either browser or extension is closed or reloaded.",
17693
+ "properties": {
17694
+ "QUOTA_BYTES": {
17695
+ "description": "The maximum amount of data (in bytes, currently at 10MB) that can be stored in session storage, as measured by the StructuredCloneHolder of every value plus every key's length."
17696
+ }
17697
+ }
17693
17698
  }
17694
17699
  }
17695
17700
  }
@@ -17698,64 +17703,6 @@
17698
17703
  {
17699
17704
  "namespace": "manifest",
17700
17705
  "types": [
17701
- {
17702
- "$extend": "WebExtensionManifest",
17703
- "properties": {
17704
- "telemetry": {
17705
- "type": "object",
17706
- "optional": true,
17707
- "additionalProperties": {
17708
- "$ref": "UnrecognizedProperty"
17709
- },
17710
- "properties": {
17711
- "ping_type": {
17712
- "type": "string"
17713
- },
17714
- "schemaNamespace": {
17715
- "type": "string"
17716
- },
17717
- "public_key": {
17718
- "type": "object",
17719
- "properties": {
17720
- "id": {
17721
- "type": "string"
17722
- },
17723
- "key": {
17724
- "type": "object",
17725
- "properties": {
17726
- "crv": {
17727
- "type": "string",
17728
- "optional": "false"
17729
- },
17730
- "kty": {
17731
- "type": "string",
17732
- "optional": "false"
17733
- },
17734
- "x": {
17735
- "type": "string",
17736
- "optional": "false"
17737
- },
17738
- "y": {
17739
- "type": "string",
17740
- "optional": "false"
17741
- }
17742
- }
17743
- }
17744
- }
17745
- },
17746
- "study_name": {
17747
- "type": "string",
17748
- "optional": true
17749
- },
17750
- "pioneer_id": {
17751
- "type": "boolean",
17752
- "optional": true,
17753
- "default": false
17754
- }
17755
- }
17756
- }
17757
- }
17758
- },
17759
17706
  {
17760
17707
  "$extend": "PermissionPrivileged",
17761
17708
  "choices": [
@@ -17912,39 +17859,6 @@
17912
17859
  }
17913
17860
  ]
17914
17861
  },
17915
- {
17916
- "name": "submitEncryptedPing",
17917
- "type": "function",
17918
- "description": "Submits a custom ping to the Telemetry back-end, with an encrypted payload. Requires a telemetry entry in the manifest to be used.",
17919
- "parameters": [
17920
- {
17921
- "name": "message",
17922
- "type": "object",
17923
- "additionalProperties": {
17924
- "type": "any"
17925
- },
17926
- "description": "The data payload for the ping, which will be encrypted."
17927
- },
17928
- {
17929
- "description": "Options object.",
17930
- "name": "options",
17931
- "type": "object",
17932
- "properties": {
17933
- "schemaName": {
17934
- "type": "string",
17935
- "optional": false,
17936
- "description": "Schema name used for payload."
17937
- },
17938
- "schemaVersion": {
17939
- "type": "integer",
17940
- "optional": false,
17941
- "description": "Schema version used for payload."
17942
- }
17943
- }
17944
- }
17945
- ],
17946
- "async": true
17947
- },
17948
17862
  {
17949
17863
  "name": "canUpload",
17950
17864
  "type": "function",
@@ -18113,6 +18027,7 @@
18113
18027
  },
18114
18028
  {
18115
18029
  "name": "recordEvent",
18030
+ "deprecated": "`recordEvent` has been deprecated since Firefox 132 (see bug 1894533)",
18116
18031
  "type": "function",
18117
18032
  "description": "Record an event in Telemetry. Throws when trying to record an unknown event.",
18118
18033
  "async": true,
@@ -18172,6 +18087,7 @@
18172
18087
  },
18173
18088
  {
18174
18089
  "name": "registerEvents",
18090
+ "deprecated": "`registerEvents` has been deprecated since Firefox 132 (see bug 1894533)",
18175
18091
  "type": "function",
18176
18092
  "description": "Register new events to record them from addons. See nsITelemetry.idl for more details.",
18177
18093
  "async": true,
@@ -3098,8 +3098,15 @@
3098
3098
  "description": "The human-friendly name of this account."
3099
3099
  },
3100
3100
  "type": {
3101
- "type": "string",
3102
- "description": "What sort of account this is, e.g. <var>imap</var>, <var>nntp</var>, or <var>pop3</var>."
3101
+ "choices": [
3102
+ {
3103
+ "$ref": "accounts.NativeMailAccountType"
3104
+ },
3105
+ {
3106
+ "$ref": "accounts.ExtensionMailAccountType"
3107
+ }
3108
+ ],
3109
+ "description": "What sort of account this is. Either one of the natively supported account types, or an account type added by an extension."
3103
3110
  },
3104
3111
  "folders": {
3105
3112
  "max_manifest_version": 2,
@@ -3135,17 +3142,18 @@
3135
3142
  "description": "A unique id representing a $(ref:accounts.MailAccount)."
3136
3143
  },
3137
3144
  {
3138
- "id": "MailAccountType",
3139
- "description": "The type of an account.",
3145
+ "id": "NativeMailAccountType",
3146
+ "description": "The type of an account natively supported by Thunderbird.",
3140
3147
  "choices": [
3141
3148
  {
3142
3149
  "max_manifest_version": 2,
3143
3150
  "type": "string",
3144
3151
  "enum": [
3145
3152
  "imap",
3146
- "pop3",
3147
3153
  "nntp",
3148
- "none"
3154
+ "none",
3155
+ "pop3",
3156
+ "rss"
3149
3157
  ]
3150
3158
  },
3151
3159
  {
@@ -3153,12 +3161,19 @@
3153
3161
  "type": "string",
3154
3162
  "enum": [
3155
3163
  "imap",
3156
- "pop3",
3164
+ "local",
3157
3165
  "nntp",
3158
- "local"
3166
+ "pop3",
3167
+ "rss"
3159
3168
  ]
3160
3169
  }
3161
3170
  ]
3171
+ },
3172
+ {
3173
+ "id": "ExtensionMailAccountType",
3174
+ "description": "The type of an account which was added by an extension. For the time being there is no guarantee for account types added by extensions to always work as expected.",
3175
+ "type": "string",
3176
+ "pattern": "^extension:.*$"
3162
3177
  }
3163
3178
  ],
3164
3179
  "functions": [
@@ -3244,8 +3259,14 @@
3244
3259
  "optional": true,
3245
3260
  "parameters": [
3246
3261
  {
3247
- "$ref": "accounts.MailAccount",
3248
- "optional": true
3262
+ "choices": [
3263
+ {
3264
+ "$ref": "accounts.MailAccount"
3265
+ },
3266
+ {
3267
+ "type": "null"
3268
+ }
3269
+ ]
3249
3270
  }
3250
3271
  ]
3251
3272
  }
@@ -6150,7 +6171,7 @@
6150
6171
  {
6151
6172
  "name": "getAccount",
6152
6173
  "type": "function",
6153
- "description": "Retrieve information about a single cloud file account, or <var>undefined</var> if it does not exists",
6174
+ "description": "Retrieve information about a single cloud file account. Returns <var>undefined</var>, if the requested account does not exist.",
6154
6175
  "allowedContexts": [
6155
6176
  "content"
6156
6177
  ],
@@ -6168,8 +6189,7 @@
6168
6189
  "parameters": [
6169
6190
  {
6170
6191
  "optional": true,
6171
- "$ref": "CloudFileAccount",
6172
- "description": "This may return undefined"
6192
+ "$ref": "CloudFileAccount"
6173
6193
  }
6174
6194
  ]
6175
6195
  }
@@ -6202,7 +6222,7 @@
6202
6222
  {
6203
6223
  "name": "updateAccount",
6204
6224
  "type": "function",
6205
- "description": "Update a cloud file account.",
6225
+ "description": "Update a cloud file account. Returns <var>undefined</var>, if the requested account does not exist.",
6206
6226
  "allowedContexts": [
6207
6227
  "content"
6208
6228
  ],
@@ -6255,8 +6275,7 @@
6255
6275
  "parameters": [
6256
6276
  {
6257
6277
  "optional": true,
6258
- "$ref": "CloudFileAccount",
6259
- "description": "This may return undefined"
6278
+ "$ref": "CloudFileAccount"
6260
6279
  }
6261
6280
  ]
6262
6281
  }
@@ -6356,7 +6375,7 @@
6356
6375
  "additionalFccFolderId": {
6357
6376
  "min_manifest_version": 3,
6358
6377
  "$ref": "folders.MailFolderId",
6359
- "description": "An additional fcc folder which can be selected while composing the message. Cleared when set to <var>null</var>.",
6378
+ "description": "An additional fcc folder which can be selected while composing the message. Cleared when set to <var>null</var>. The permission <permission>accountsRead</permission> is required to use this property.",
6360
6379
  "optional": "omit-key-if-missing"
6361
6380
  },
6362
6381
  "additionalFccFolder": {
@@ -6375,7 +6394,7 @@
6375
6394
  ]
6376
6395
  }
6377
6396
  ],
6378
- "description": "An additional fcc folder which can be selected while composing the message, an empty string if not used.",
6397
+ "description": "An additional fcc folder which can be selected while composing the message, an empty string if not used. The permission <permission>accountsRead</permission> is required to use this property.",
6379
6398
  "optional": true
6380
6399
  },
6381
6400
  "attachPublicPGPKey": {
@@ -6495,7 +6514,7 @@
6495
6514
  "max_manifest_version": 2,
6496
6515
  "type": "boolean",
6497
6516
  "optional": true,
6498
- "description": "Indicates whether the default fcc setting (defined by the used identity) is being overridden for this message. Setting <var>false</var> will clear the override. Setting <var>true</var> will throw an <em>ExtensionError</em>, if <var>overrideDefaultFccFolder</var> is not set as well."
6517
+ "description": "Indicates whether the default fcc setting (defined by the used identity) is being overridden for this message. Setting <var>false</var> will clear the override. Setting <var>true</var> will throw an <em>ExtensionError</em>, if <var>overrideDefaultFccFolder</var> is not set as well. The permission <permission>accountsRead</permission> is required to use this property."
6499
6518
  },
6500
6519
  "overrideDefaultFccFolder": {
6501
6520
  "max_manifest_version": 2,
@@ -6514,12 +6533,12 @@
6514
6533
  }
6515
6534
  ],
6516
6535
  "optional": true,
6517
- "description": " This value overrides the default fcc setting (defined by the used identity) for this message only. Either a $(ref:folders.MailFolder) specifying the folder for the copy of the sent message, or an empty string to not save a copy at all."
6536
+ "description": " This value overrides the default fcc setting (defined by the used identity) for this message only. Either a $(ref:folders.MailFolder) specifying the folder for the copy of the sent message, or an empty string to not save a copy at all. The permission <permission>accountsRead</permission> is required to use this property."
6518
6537
  },
6519
6538
  "overrideDefaultFccFolderId": {
6520
6539
  "min_manifest_version": 3,
6521
6540
  "$ref": "folders.MailFolderId",
6522
- "description": " This value overrides the default fcc setting (defined by the used identity) for this message only. Either a $(ref:folders.MailFolderId) specifying the folder for the copy of the sent message, or an empty string to not save a copy at all. Reset when set to <var>null</var>.",
6541
+ "description": " This value overrides the default fcc setting (defined by the used identity) for this message only. Either a $(ref:folders.MailFolderId) specifying the folder for the copy of the sent message, or an empty string to not save a copy at all. Reset when set to <var>null</var>. The permission <permission>accountsRead</permission> is required to use this property.",
6523
6542
  "optional": "omit-key-if-missing"
6524
6543
  },
6525
6544
  "plainTextBody": {
@@ -6540,7 +6559,7 @@
6540
6559
  "optional": true
6541
6560
  },
6542
6561
  "relatedMessageId": {
6543
- "description": "The id of the original message (in case of draft, template, forward or reply). Read-only. Is <var>null</var> in all other cases or if the original message was opened from file.",
6562
+ "description": "The id of the original message (in case of draft, template, forward or reply). Read-only. Is <var>undefined</var> in all other cases or if the original message was opened from file.",
6544
6563
  "$ref": "messages.MessageId",
6545
6564
  "optional": true
6546
6565
  },
@@ -8375,84 +8394,138 @@
8375
8394
  "types": [
8376
8395
  {
8377
8396
  "id": "MailFolder",
8378
- "type": "object",
8379
8397
  "description": "An object describing a folder.",
8380
- "properties": {
8381
- "accountId": {
8382
- "$ref": "accounts.MailAccountId",
8383
- "optional": true,
8384
- "description": "The id of the account this folder belongs to."
8385
- },
8386
- "id": {
8387
- "$ref": "folders.MailFolderId",
8388
- "optional": true,
8389
- "description": "An identifier for the folder."
8390
- },
8391
- "isFavorite": {
8392
- "type": "boolean",
8393
- "optional": true,
8394
- "description": "Whether this folder is a favorite folder."
8395
- },
8396
- "isRoot": {
8397
- "type": "boolean",
8398
- "optional": true,
8399
- "description": "Whether this folder is a root folder."
8400
- },
8401
- "isTag": {
8402
- "type": "boolean",
8403
- "optional": true,
8404
- "description": "Whether this folder is a virtual tag folder."
8405
- },
8406
- "isUnified": {
8407
- "type": "boolean",
8408
- "optional": true,
8409
- "description": "Whether this folder is a unified mailbox folder."
8410
- },
8411
- "isVirtual": {
8412
- "type": "boolean",
8413
- "optional": true,
8414
- "description": "Whether this folder is a virtual search folder."
8415
- },
8416
- "name": {
8417
- "type": "string",
8418
- "optional": true,
8419
- "description": "The human-friendly name of this folder."
8420
- },
8421
- "path": {
8422
- "type": "string",
8423
- "description": "Path to this folder in the account. Although paths look predictable, never guess a folder's path, as there are a number of reasons why it may not be what you think it is. Use $(ref:folders.getParentFolders) or $(ref:folders.getSubFolders) to obtain hierarchy information."
8424
- },
8425
- "specialUse": {
8426
- "type": "array",
8427
- "items": {
8428
- "$ref": "folders.MailFolderSpecialUse"
8429
- },
8430
- "optional": true,
8431
- "description": "The special use of this folder. A folder can have multiple special uses."
8432
- },
8433
- "subFolders": {
8434
- "description": "Subfolders of this folder. The property may be <var>null</var>, if inclusion of folders had not been requested. The folders will be returned in the same order as used in Thunderbird's folder pane.",
8435
- "choices": [
8436
- {
8398
+ "choices": [
8399
+ {
8400
+ "max_manifest_version": 2,
8401
+ "type": "object",
8402
+ "properties": {
8403
+ "accountId": {
8404
+ "$ref": "accounts.MailAccountId",
8405
+ "optional": true,
8406
+ "description": "The id of the account this folder belongs to."
8407
+ },
8408
+ "id": {
8409
+ "$ref": "folders.MailFolderId",
8410
+ "optional": true,
8411
+ "description": "An identifier for the folder."
8412
+ },
8413
+ "isFavorite": {
8414
+ "type": "boolean",
8415
+ "optional": true,
8416
+ "description": "Whether this folder is a favorite folder."
8417
+ },
8418
+ "isRoot": {
8419
+ "type": "boolean",
8420
+ "optional": true,
8421
+ "description": "Whether this folder is a root folder."
8422
+ },
8423
+ "isTag": {
8424
+ "type": "boolean",
8425
+ "optional": true,
8426
+ "description": "Whether this folder is a virtual tag folder."
8427
+ },
8428
+ "isUnified": {
8429
+ "type": "boolean",
8430
+ "optional": true,
8431
+ "description": "Whether this folder is a unified mailbox folder."
8432
+ },
8433
+ "isVirtual": {
8434
+ "type": "boolean",
8435
+ "optional": true,
8436
+ "description": "Whether this folder is a virtual search folder."
8437
+ },
8438
+ "name": {
8439
+ "type": "string",
8440
+ "optional": true,
8441
+ "description": "The human-friendly name of this folder."
8442
+ },
8443
+ "path": {
8444
+ "type": "string",
8445
+ "description": "Path to this folder in the account. Although paths look predictable, never guess a folder's path, as there are a number of reasons why it may not be what you think it is. Use $(ref:folders.getParentFolders) or $(ref:folders.getSubFolders) to obtain hierarchy information."
8446
+ },
8447
+ "specialUse": {
8448
+ "type": "array",
8449
+ "items": {
8450
+ "$ref": "folders.MailFolderSpecialUse"
8451
+ },
8452
+ "optional": true,
8453
+ "description": "The special use of this folder. A folder can have multiple special uses."
8454
+ },
8455
+ "subFolders": {
8456
+ "description": "Subfolders of this folder. This property is optional and only present if the inclusion of subfolders had been requested. The folders will be returned in the same order as used in Thunderbird's folder pane.",
8437
8457
  "type": "array",
8438
8458
  "items": {
8439
8459
  "$ref": "folders.MailFolder"
8440
- }
8460
+ },
8461
+ "optional": true
8441
8462
  },
8442
- {
8443
- "max_manifest_version": 2,
8444
- "type": "null"
8463
+ "type": {
8464
+ "$ref": "folders.MailFolderSpecialUse",
8465
+ "optional": true,
8466
+ "description": "Deprecated. Was used to represent the type of this folder."
8445
8467
  }
8446
- ],
8447
- "optional": true
8468
+ }
8448
8469
  },
8449
- "type": {
8450
- "max_manifest_version": 2,
8451
- "$ref": "folders.MailFolderSpecialUse",
8452
- "optional": true,
8453
- "description": "Deprecated. Was used to represent the type of this folder."
8470
+ {
8471
+ "min_manifest_version": 3,
8472
+ "type": "object",
8473
+ "properties": {
8474
+ "accountId": {
8475
+ "$ref": "accounts.MailAccountId",
8476
+ "description": "The id of the account this folder belongs to. This property is optional and not available for unified mailbox folders or virtual tag folders.",
8477
+ "optional": true
8478
+ },
8479
+ "id": {
8480
+ "$ref": "folders.MailFolderId",
8481
+ "description": "An identifier for the folder."
8482
+ },
8483
+ "isFavorite": {
8484
+ "type": "boolean",
8485
+ "description": "Whether this folder is a favorite folder."
8486
+ },
8487
+ "isRoot": {
8488
+ "type": "boolean",
8489
+ "description": "Whether this folder is a root folder."
8490
+ },
8491
+ "isTag": {
8492
+ "type": "boolean",
8493
+ "description": "Whether this folder is a virtual tag folder."
8494
+ },
8495
+ "isUnified": {
8496
+ "type": "boolean",
8497
+ "description": "Whether this folder is a unified mailbox folder."
8498
+ },
8499
+ "isVirtual": {
8500
+ "type": "boolean",
8501
+ "description": "Whether this folder is a virtual search folder."
8502
+ },
8503
+ "name": {
8504
+ "type": "string",
8505
+ "description": "The human-friendly name of this folder."
8506
+ },
8507
+ "path": {
8508
+ "type": "string",
8509
+ "description": "Path to this folder in the account. Although paths look predictable, never guess a folder's path, as there are a number of reasons why it may not be what you think it is. Use $(ref:folders.getParentFolders) or $(ref:folders.getSubFolders) to obtain hierarchy information."
8510
+ },
8511
+ "specialUse": {
8512
+ "type": "array",
8513
+ "items": {
8514
+ "$ref": "folders.MailFolderSpecialUse"
8515
+ },
8516
+ "description": "The special use of this folder. A folder can have multiple special uses."
8517
+ },
8518
+ "subFolders": {
8519
+ "description": "Subfolders of this folder. This property is optional and only present if the inclusion of subfolders had been requested. The folders will be returned in the same order as used in Thunderbird's folder pane.",
8520
+ "type": "array",
8521
+ "items": {
8522
+ "$ref": "folders.MailFolder"
8523
+ },
8524
+ "optional": true
8525
+ }
8526
+ }
8454
8527
  }
8455
- }
8528
+ ]
8456
8529
  },
8457
8530
  {
8458
8531
  "id": "MailFolderId",
@@ -9569,7 +9642,7 @@
9569
9642
  {
9570
9643
  "name": "getTagFolder",
9571
9644
  "type": "function",
9572
- "description": "Get one of the special unified mailbox tag folders, which are virtual search folders and group messages from all mail accounts based on their tags.",
9645
+ "description": "Get one of the special virtual tag folders, which are virtual search folders and group messages from all mail accounts based on their tags.",
9573
9646
  "async": "callback",
9574
9647
  "parameters": [
9575
9648
  {
@@ -10306,7 +10379,7 @@
10306
10379
  "displayedFolderId": {
10307
10380
  "$ref": "folders.MailFolderId",
10308
10381
  "min_manifest_version": 3,
10309
- "description": "Sets the folder displayed in the mail tab. Requires the <permission>accountsRead</permission> permission. The previous message selection in the given folder will be restored, if any. This property is ignored, if <var>selectedMessages</var> is specified.",
10382
+ "description": "Sets the folder displayed in the mail tab. Requires the <permission>accountsRead</permission> permission. The previous message selection in the given folder will be restored, if any.",
10310
10383
  "optional": true
10311
10384
  },
10312
10385
  "displayedFolder": {
@@ -10320,7 +10393,7 @@
10320
10393
  }
10321
10394
  ],
10322
10395
  "max_manifest_version": 2,
10323
- "description": "Sets the folder displayed in the mail tab. Requires the <permission>accountsRead</permission> permission. The previous message selection in the given folder will be restored, if any. This property is ignored, if <var>selectedMessages</var> is specified.",
10396
+ "description": "Sets the folder displayed in the mail tab. Requires the <permission>accountsRead</permission> permission. The previous message selection in the given folder will be restored, if any.",
10324
10397
  "optional": true
10325
10398
  }
10326
10399
  }
@@ -10444,8 +10517,7 @@
10444
10517
  "parameters": [
10445
10518
  {
10446
10519
  "$ref": "mailTabs.MailTab",
10447
- "optional": true,
10448
- "description": "This may return undefined"
10520
+ "optional": true
10449
10521
  }
10450
10522
  ]
10451
10523
  }
@@ -11161,6 +11233,30 @@
11161
11233
  }
11162
11234
  },
11163
11235
  "description": "A <em>dictionary object</em> to specify paths for multiple icons in different sizes, so the best matching icon can be used, instead of scaling a standard icon to fit the pixel density of the user's display. Each entry is a <em>name-value</em> pair, with <em>name</em> being a size and <em>value</em> being a $(ref:menus.MenuIconPath). Example: <literalinclude>includes/IconPath.json<lang>JSON</lang></literalinclude>See the <a href='url-choosing-icon-size'>MDN documentation about choosing icon sizes</a> for more information on this. "
11236
+ },
11237
+ {
11238
+ "id": "MenuActionCommand",
11239
+ "choices": [
11240
+ {
11241
+ "type": "string",
11242
+ "enum": [
11243
+ "_execute_browser_action",
11244
+ "_execute_compose_action",
11245
+ "_execute_message_display_action"
11246
+ ],
11247
+ "max_manifest_version": 2
11248
+ },
11249
+ {
11250
+ "type": "string",
11251
+ "enum": [
11252
+ "_execute_action",
11253
+ "_execute_compose_action",
11254
+ "_execute_message_display_action"
11255
+ ],
11256
+ "min_manifest_version": 3
11257
+ }
11258
+ ],
11259
+ "description": "A predefined command to open an action popup."
11164
11260
  }
11165
11261
  ],
11166
11262
  "functions": [
@@ -11293,16 +11389,13 @@
11293
11389
  "optional": true,
11294
11390
  "choices": [
11295
11391
  {
11296
- "type": "string",
11297
- "max_manifest_version": 2,
11298
- "description": "Specifies a command to issue for the context click. Currently supports internal commands <var>_execute_browser_action</var>, <var>_execute_compose_action</var> and <var>_execute_message_display_action</var>."
11392
+ "type": "string"
11299
11393
  },
11300
11394
  {
11301
- "type": "string",
11302
- "min_manifest_version": 3,
11303
- "description": "Specifies a command to issue for the context click. Currently supports internal commands <var>_execute_action</var>, <var>_execute_compose_action</var> and <var>_execute_message_display_action</var>."
11395
+ "$ref": "menus.MenuActionCommand"
11304
11396
  }
11305
- ]
11397
+ ],
11398
+ "description": "Specifies a command to issue for the context click. Can either be a user defined command, or one of the predefined action commands."
11306
11399
  }
11307
11400
  }
11308
11401
  },
@@ -12665,26 +12758,31 @@
12665
12758
  }
12666
12759
  }
12667
12760
  },
12761
+ {
12762
+ "id": "MailBoxHeaderString",
12763
+ "type": "string",
12764
+ "description": "Content may either be a single email address, or a mailbox string (see RFC 5322, section 3.4). Use $(ref:messengerUtilities.parseMailboxString) to extract the name and/or the email from the mailbox string."
12765
+ },
12668
12766
  {
12669
12767
  "id": "MessageHeader",
12670
12768
  "type": "object",
12671
12769
  "description": "Basic information about a message.",
12672
12770
  "properties": {
12673
12771
  "author": {
12674
- "type": "string"
12772
+ "$ref": "messages.MailBoxHeaderString"
12675
12773
  },
12676
12774
  "bccList": {
12677
12775
  "description": "The Bcc recipients. Not populated for news/nntp messages.",
12678
12776
  "type": "array",
12679
12777
  "items": {
12680
- "type": "string"
12778
+ "$ref": "messages.MailBoxHeaderString"
12681
12779
  }
12682
12780
  },
12683
12781
  "ccList": {
12684
12782
  "description": "The Cc recipients. Not populated for news/nntp messages.",
12685
12783
  "type": "array",
12686
12784
  "items": {
12687
- "type": "string"
12785
+ "$ref": "messages.MailBoxHeaderString"
12688
12786
  }
12689
12787
  },
12690
12788
  "date": {
@@ -12737,7 +12835,7 @@
12737
12835
  "description": "The To recipients. Not populated for news/nntp messages.",
12738
12836
  "type": "array",
12739
12837
  "items": {
12740
- "type": "string"
12838
+ "$ref": "messages.MailBoxHeaderString"
12741
12839
  }
12742
12840
  },
12743
12841
  "size": {
@@ -14128,7 +14226,7 @@
14128
14226
  {
14129
14227
  "name": "getTabValue",
14130
14228
  "type": "function",
14131
- "description": "Retrieve a previously stored value for a given tab, given its key. Returns <var>undefined</var> if the key does not exist.",
14229
+ "description": "Retrieve a previously stored value for a given tab, given its key. Returns <var>undefined</var> if the requested <var>key</var> does not exist for the given <var>tabId</var>.",
14132
14230
  "async": "callback",
14133
14231
  "parameters": [
14134
14232
  {
@@ -14148,8 +14246,7 @@
14148
14246
  "parameters": [
14149
14247
  {
14150
14248
  "type": "string",
14151
- "optional": true,
14152
- "description": "This may return undefined"
14249
+ "optional": true
14153
14250
  }
14154
14251
  ]
14155
14252
  }
@@ -14181,93 +14278,98 @@
14181
14278
  "namespace": "spaces",
14182
14279
  "types": [
14183
14280
  {
14184
- "id": "SpaceButtonProperties_MV2",
14185
- "type": "object",
14186
- "properties": {
14187
- "badgeBackgroundColor": {
14188
- "choices": [
14189
- {
14190
- "type": "string"
14281
+ "id": "SpaceButtonProperties",
14282
+ "choices": [
14283
+ {
14284
+ "max_manifest_version": 2,
14285
+ "type": "object",
14286
+ "properties": {
14287
+ "badgeBackgroundColor": {
14288
+ "choices": [
14289
+ {
14290
+ "type": "string"
14291
+ },
14292
+ {
14293
+ "$ref": "spaces.ColorArray"
14294
+ }
14295
+ ],
14296
+ "optional": true,
14297
+ "description": "Sets the background color of the badge. Can be specified as an array of four integers in the range [0,255] that make up the RGBA color of the badge. For example, opaque red is <var>[255, 0, 0, 255]</var>. Can also be a string with an HTML color name (<var>red</var>) or a HEX color value (<var>#FF0000</var> or <var>#F00</var>). Reset when set to an empty string."
14191
14298
  },
14192
- {
14193
- "$ref": "spaces.ColorArray"
14194
- }
14195
- ],
14196
- "optional": true,
14197
- "description": "Sets the background color of the badge. Can be specified as an array of four integers in the range [0,255] that make up the RGBA color of the badge. For example, opaque red is <var>[255, 0, 0, 255]</var>. Can also be a string with an HTML color name (<var>red</var>) or a HEX color value (<var>#FF0000</var> or <var>#F00</var>). Reset when set to an empty string."
14198
- },
14199
- "badgeText": {
14200
- "type": "string",
14201
- "optional": true,
14202
- "description": "Sets the badge text for the button in the spaces toolbar. The badge is displayed on top of the icon. Any number of characters can be set, but only about four can fit in the space. Removed when set to an empty string."
14203
- },
14204
- "defaultIcons": {
14205
- "choices": [
14206
- {
14207
- "type": "string"
14299
+ "badgeText": {
14300
+ "type": "string",
14301
+ "optional": true,
14302
+ "description": "Sets the badge text for the button in the spaces toolbar. The badge is displayed on top of the icon. Any number of characters can be set, but only about four can fit in the space. Removed when set to an empty string."
14208
14303
  },
14209
- {
14210
- "$ref": "manifest.IconPath"
14304
+ "defaultIcons": {
14305
+ "choices": [
14306
+ {
14307
+ "type": "string"
14308
+ },
14309
+ {
14310
+ "$ref": "manifest.IconPath"
14311
+ }
14312
+ ],
14313
+ "optional": true,
14314
+ "description": "The paths to one or more icons for the button in the spaces toolbar. Reset to the extension icon, when set to an empty string."
14315
+ },
14316
+ "themeIcons": {
14317
+ "type": "array",
14318
+ "optional": true,
14319
+ "items": {
14320
+ "$ref": "manifest.ThemeIcons"
14321
+ },
14322
+ "description": "Specifies dark and light icons for the button in the spaces toolbar to be used with themes: The <var>light</var> icons will be used on dark backgrounds and vice versa. At least the set for <em>16px</em> icons should be specified. The set for <em>32px</em> icons will be used on screens with a very high pixel density, if specified. Reset when set to an empty array."
14323
+ },
14324
+ "title": {
14325
+ "type": "string",
14326
+ "optional": true,
14327
+ "description": "The title for the button in the spaces toolbar, used in the tooltip of the button and as the displayed name in the overflow menu. Reset to the name of the extension, when set to an empty string."
14211
14328
  }
14212
- ],
14213
- "optional": true,
14214
- "description": "The paths to one or more icons for the button in the spaces toolbar. Reset to the extension icon, when set to an empty string."
14215
- },
14216
- "themeIcons": {
14217
- "type": "array",
14218
- "optional": true,
14219
- "items": {
14220
- "$ref": "manifest.ThemeIcons"
14221
- },
14222
- "description": "Specifies dark and light icons for the button in the spaces toolbar to be used with themes: The <var>light</var> icons will be used on dark backgrounds and vice versa. At least the set for <em>16px</em> icons should be specified. The set for <em>32px</em> icons will be used on screens with a very high pixel density, if specified. Reset when set to an empty array."
14329
+ }
14223
14330
  },
14224
- "title": {
14225
- "type": "string",
14226
- "optional": true,
14227
- "description": "The title for the button in the spaces toolbar, used in the tooltip of the button and as the displayed name in the overflow menu. Reset to the name of the extension, when set to an empty string."
14228
- }
14229
- }
14230
- },
14231
- {
14232
- "id": "SpaceButtonProperties_MV3",
14233
- "type": "object",
14234
- "properties": {
14235
- "badgeBackgroundColor": {
14236
- "choices": [
14237
- {
14238
- "type": "string"
14331
+ {
14332
+ "min_manifest_version": 3,
14333
+ "type": "object",
14334
+ "properties": {
14335
+ "badgeBackgroundColor": {
14336
+ "choices": [
14337
+ {
14338
+ "type": "string"
14339
+ },
14340
+ {
14341
+ "$ref": "spaces.ColorArray"
14342
+ }
14343
+ ],
14344
+ "optional": "omit-key-if-missing",
14345
+ "description": "Sets the background color of the badge. Can be specified as an array of four integers in the range [0,255] that make up the RGBA color of the badge. For example, opaque red is <var>[255, 0, 0, 255]</var>. Can also be a string with an HTML color name (<var>red</var>) or a HEX color value (<var>#FF0000</var> or <var>#F00</var>). Reset when set to <var>null</var>."
14239
14346
  },
14240
- {
14241
- "$ref": "spaces.ColorArray"
14347
+ "badgeText": {
14348
+ "type": "string",
14349
+ "optional": "omit-key-if-missing",
14350
+ "description": "Sets the badge text for the button in the spaces toolbar. The badge is displayed on top of the icon. Any number of characters can be set, but only about four can fit in the space. Removed when set to <var>null</var>."
14351
+ },
14352
+ "defaultIcons": {
14353
+ "$ref": "manifest.IconPath",
14354
+ "optional": "omit-key-if-missing",
14355
+ "description": "The paths to one or more icons for the button in the spaces toolbar. Reset to the extension icon, when set to <var>null</var>."
14356
+ },
14357
+ "themeIcons": {
14358
+ "type": "array",
14359
+ "optional": "omit-key-if-missing",
14360
+ "items": {
14361
+ "$ref": "manifest.ThemeIcons"
14362
+ },
14363
+ "description": "Specifies dark and light icons for the button in the spaces toolbar to be used with themes: The <var>light</var> icons will be used on dark backgrounds and vice versa. At least the set for <em>16px</em> icons should be specified. The set for <em>32px</em> icons will be used on screens with a very high pixel density, if specified. Reset when set to <var>null</var>."
14364
+ },
14365
+ "title": {
14366
+ "type": "string",
14367
+ "optional": "omit-key-if-missing",
14368
+ "description": "The title for the button in the spaces toolbar, used in the tooltip of the button and as the displayed name in the overflow menu. Reset to the name of the extension, when set to <var>null</var>."
14242
14369
  }
14243
- ],
14244
- "optional": "omit-key-if-missing",
14245
- "description": "Sets the background color of the badge. Can be specified as an array of four integers in the range [0,255] that make up the RGBA color of the badge. For example, opaque red is <var>[255, 0, 0, 255]</var>. Can also be a string with an HTML color name (<var>red</var>) or a HEX color value (<var>#FF0000</var> or <var>#F00</var>). Reset when set to <var>null</var>."
14246
- },
14247
- "badgeText": {
14248
- "type": "string",
14249
- "optional": "omit-key-if-missing",
14250
- "description": "Sets the badge text for the button in the spaces toolbar. The badge is displayed on top of the icon. Any number of characters can be set, but only about four can fit in the space. Removed when set to <var>null</var>."
14251
- },
14252
- "defaultIcons": {
14253
- "$ref": "manifest.IconPath",
14254
- "optional": "omit-key-if-missing",
14255
- "description": "The paths to one or more icons for the button in the spaces toolbar. Reset to the extension icon, when set to <var>null</var>."
14256
- },
14257
- "themeIcons": {
14258
- "type": "array",
14259
- "optional": "omit-key-if-missing",
14260
- "items": {
14261
- "$ref": "manifest.ThemeIcons"
14262
- },
14263
- "description": "Specifies dark and light icons for the button in the spaces toolbar to be used with themes: The <var>light</var> icons will be used on dark backgrounds and vice versa. At least the set for <em>16px</em> icons should be specified. The set for <em>32px</em> icons will be used on screens with a very high pixel density, if specified. Reset when set to <var>null</var>."
14264
- },
14265
- "title": {
14266
- "type": "string",
14267
- "optional": "omit-key-if-missing",
14268
- "description": "The title for the button in the spaces toolbar, used in the tooltip of the button and as the displayed name in the overflow menu. Reset to the name of the extension, when set to <var>null</var>."
14370
+ }
14269
14371
  }
14270
- }
14372
+ ]
14271
14373
  },
14272
14374
  {
14273
14375
  "id": "ColorArray",
@@ -14332,16 +14434,7 @@
14332
14434
  {
14333
14435
  "name": "buttonProperties",
14334
14436
  "description": "Properties of the button for the new space.",
14335
- "choices": [
14336
- {
14337
- "$ref": "spaces.SpaceButtonProperties_MV3",
14338
- "min_manifest_version": 3
14339
- },
14340
- {
14341
- "$ref": "spaces.SpaceButtonProperties_MV2",
14342
- "max_manifest_version": 2
14343
- }
14344
- ],
14437
+ "$ref": "spaces.SpaceButtonProperties",
14345
14438
  "optional": true,
14346
14439
  "default": {}
14347
14440
  },
@@ -14483,16 +14576,7 @@
14483
14576
  {
14484
14577
  "name": "buttonProperties",
14485
14578
  "description": "Only specified button properties will be updated.",
14486
- "choices": [
14487
- {
14488
- "$ref": "spaces.SpaceButtonProperties_MV3",
14489
- "min_manifest_version": 3
14490
- },
14491
- {
14492
- "$ref": "spaces.SpaceButtonProperties_MV2",
14493
- "max_manifest_version": 2
14494
- }
14495
- ],
14579
+ "$ref": "spaces.SpaceButtonProperties",
14496
14580
  "optional": true
14497
14581
  }
14498
14582
  ]
@@ -14954,7 +15038,7 @@
14954
15038
  {
14955
15039
  "name": "getCurrent",
14956
15040
  "type": "function",
14957
- "description": "Gets the tab that this script call is being made from. May be <var>undefined</var> if called from a non-tab context (for example: a background page or popup view).",
15041
+ "description": "Gets the tab that this script call is being made from. Returns <var>undefined</var> if called from a non-tab context (for example a background page or a popup view).",
14958
15042
  "async": "callback",
14959
15043
  "parameters": [
14960
15044
  {
@@ -14965,8 +15049,7 @@
14965
15049
  {
14966
15050
  "name": "tab",
14967
15051
  "$ref": "Tab",
14968
- "optional": true,
14969
- "description": "This may return undefined"
15052
+ "optional": true
14970
15053
  }
14971
15054
  ]
14972
15055
  }
@@ -15051,7 +15134,7 @@
15051
15134
  {
15052
15135
  "name": "create",
15053
15136
  "type": "function",
15054
- "description": "Creates a new content tab. Use the $(doc:messageDisplay) to open messages. Only supported in <var>normal</var> windows. Same-site links in the loaded page are opened within Thunderbird, all other links are opened in the user's default browser. To override this behavior, add-ons have to register a <a href='url-content-script-click-capture'>content script</a> , capture click events and handle them manually.",
15137
+ "description": "Creates a new content tab. To create message tabs, use the $(ref:messageDisplay.open). Only supported in <var>normal</var> windows. Same-site links in the loaded page are opened within Thunderbird, all other links are opened in the user's default browser. To override this behavior, add-ons have to register a <a href='url-content-script-click-capture'>content script</a> , capture click events and handle them manually.",
15055
15138
  "async": "callback",
15056
15139
  "parameters": [
15057
15140
  {
@@ -15103,7 +15186,7 @@
15103
15186
  {
15104
15187
  "name": "tab",
15105
15188
  "$ref": "Tab",
15106
- "description": "Details about the created tab. Will contain the ID of the new tab."
15189
+ "description": "A Promise that will be fulfilled with a $(ref:tabs.Tab) object containing details about the created tab. If the tab could not be created (for example, because it was added to a non-normal window) the promise will be rejected with an error message. The returned promise resolves as soon as the tab has been created. The tab may still be loading, with its title being <var>loading...</var> and its URL being <var>about:blank</var>. To detect when the tab has finished loading, listen to the $(ref:tabs.onUpdated) event before creating the tab."
15107
15190
  }
15108
15191
  ]
15109
15192
  }
@@ -15533,7 +15616,7 @@
15533
15616
  {
15534
15617
  "name": "onCreated",
15535
15618
  "type": "function",
15536
- "description": "Fired when a tab is created. Note that the tab's URL may not be set at the time this event fired, but you can listen to onUpdated events to be notified when a URL is set.",
15619
+ "description": "Fired when a tab is created. The tab may still be loading, with its title being <var>loading...</var> and its URL being <var>about:blank</var>. To detect when the tab has finished loading, listen to the $(ref:tabs.onUpdated) event.",
15537
15620
  "parameters": [
15538
15621
  {
15539
15622
  "$ref": "Tab",
@@ -721,7 +721,8 @@
721
721
  "optional": true,
722
722
  "format": "url",
723
723
  "pattern": "^(https://|http://(localhost|127\\.0\\.0\\.1|\\[::1\\])(:\\d*)?(/|$)).*$",
724
- "preprocess": "localize"
724
+ "preprocess": "localize",
725
+ "deprecated": "Unsupported on Firefox at this time."
725
726
  },
726
727
  "alternate_urls": {
727
728
  "type": "array",
@@ -13884,30 +13885,6 @@
13884
13885
  }
13885
13886
  }
13886
13887
  },
13887
- {
13888
- "id": "WebExtensionSitePermissionsManifest",
13889
- "type": "object",
13890
- "description": "Represents a WebExtension site permissions manifest.json file",
13891
- "$import": "ManifestBase",
13892
- "properties": {
13893
- "site_permissions": {
13894
- "type": "array",
13895
- "minItems": 1,
13896
- "items": {
13897
- "$ref": "SitePermission"
13898
- }
13899
- },
13900
- "install_origins": {
13901
- "type": "array",
13902
- "minItems": 1,
13903
- "maxItems": 1,
13904
- "items": {
13905
- "type": "string",
13906
- "format": "origin"
13907
- }
13908
- }
13909
- }
13910
- },
13911
13888
  {
13912
13889
  "id": "ThemeIcons",
13913
13890
  "type": "object",
@@ -14020,18 +13997,6 @@
14020
13997
  }
14021
13998
  ]
14022
13999
  },
14023
- {
14024
- "id": "SitePermission",
14025
- "choices": [
14026
- {
14027
- "type": "string",
14028
- "enum": [
14029
- "midi",
14030
- "midi-sysex"
14031
- ]
14032
- }
14033
- ]
14034
- },
14035
14000
  {
14036
14001
  "id": "HttpURL",
14037
14002
  "type": "string",