summaryrefslogtreecommitdiff
path: root/ext/data/schemas
diff options
context:
space:
mode:
Diffstat (limited to 'ext/data/schemas')
-rw-r--r--ext/data/schemas/custom-audio-list-schema.json33
-rw-r--r--ext/data/schemas/dictionary-index-schema.json85
-rw-r--r--ext/data/schemas/dictionary-kanji-bank-v1-schema.json33
-rw-r--r--ext/data/schemas/dictionary-kanji-bank-v3-schema.json44
-rw-r--r--ext/data/schemas/dictionary-kanji-meta-bank-v3-schema.json25
-rw-r--r--ext/data/schemas/dictionary-tag-bank-v3-schema.json32
-rw-r--r--ext/data/schemas/dictionary-term-bank-v1-schema.json36
-rw-r--r--ext/data/schemas/dictionary-term-bank-v3-schema.json125
-rw-r--r--ext/data/schemas/dictionary-term-meta-bank-v3-schema.json105
-rw-r--r--ext/data/schemas/options-schema.json1101
10 files changed, 1619 insertions, 0 deletions
diff --git a/ext/data/schemas/custom-audio-list-schema.json b/ext/data/schemas/custom-audio-list-schema.json
new file mode 100644
index 00000000..2cb3ca78
--- /dev/null
+++ b/ext/data/schemas/custom-audio-list-schema.json
@@ -0,0 +1,33 @@
+{
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "type": "object",
+ "required": [
+ "type",
+ "audioSources"
+ ],
+ "additionalProperties": false,
+ "properties": {
+ "type": {
+ "type": "string",
+ "const": "audioSourceList"
+ },
+ "audioSources": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "url"
+ ],
+ "additionalProperties": false,
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/ext/data/schemas/dictionary-index-schema.json b/ext/data/schemas/dictionary-index-schema.json
new file mode 100644
index 00000000..09cff711
--- /dev/null
+++ b/ext/data/schemas/dictionary-index-schema.json
@@ -0,0 +1,85 @@
+{
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "type": "object",
+ "description": "Index file containing information about the data contained in the dictionary.",
+ "required": [
+ "title",
+ "revision"
+ ],
+ "properties": {
+ "title": {
+ "type": "string",
+ "description": "Title of the dictionary."
+ },
+ "revision": {
+ "type": "string",
+ "description": "Revision of the dictionary. This value is only used for displaying information."
+ },
+ "sequenced": {
+ "type": "boolean",
+ "default": false,
+ "description": "Whether or not this dictionary can be used as the primary dictionary. Primary dictionaries typically contain term/expression definitions."
+ },
+ "format": {
+ "type": "integer",
+ "description": "Format of data found in the JSON data files.",
+ "enum": [1, 2, 3]
+ },
+ "version": {
+ "type": "integer",
+ "description": "Alias for format.",
+ "enum": [1, 2, 3]
+ },
+ "author": {
+ "type": "string",
+ "description": "Creator of the dictionary."
+ },
+ "url": {
+ "type": "string",
+ "description": "URL for the source of the dictionary."
+ },
+ "description": {
+ "type": "string",
+ "description": "Description of the dictionary data."
+ },
+ "attribution": {
+ "type": "string",
+ "description": "Attribution information for the dictionary data."
+ },
+ "tagMeta": {
+ "type": "object",
+ "description": "Tag information for terms and kanji. This object is obsolete and individual tag files should be used instead.",
+ "additionalProperties": {
+ "type": "object",
+ "description": "Information about a single tag. The object key is the name of the tag.",
+ "properties": {
+ "category": {
+ "type": "string",
+ "description": "Category for the tag."
+ },
+ "order": {
+ "type": "number",
+ "description": "Sorting order for the tag."
+ },
+ "notes": {
+ "type": "string",
+ "description": "Notes for the tag."
+ },
+ "score": {
+ "type": "number",
+ "description": "Score used to determine popularity. Negative values are more rare and positive values are more frequent. This score is also used to sort search results."
+ }
+ },
+ "additionalProperties": false
+ }
+ }
+ },
+ "anyOf": [
+ {
+ "required": ["format"]
+ },
+ {
+ "required": ["version"]
+ }
+ ]
+} \ No newline at end of file
diff --git a/ext/data/schemas/dictionary-kanji-bank-v1-schema.json b/ext/data/schemas/dictionary-kanji-bank-v1-schema.json
new file mode 100644
index 00000000..6dad5a7a
--- /dev/null
+++ b/ext/data/schemas/dictionary-kanji-bank-v1-schema.json
@@ -0,0 +1,33 @@
+{
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "type": "array",
+ "description": "Data file containing kanji information.",
+ "additionalItems": {
+ "type": "array",
+ "description": "Information about a single kanji character.",
+ "minItems": 4,
+ "items": [
+ {
+ "type": "string",
+ "description": "Kanji character.",
+ "minLength": 1
+ },
+ {
+ "type": "string",
+ "description": "String of space-separated onyomi readings for the kanji character. An empty string is treated as no readings."
+ },
+ {
+ "type": "string",
+ "description": "String of space-separated kunyomi readings for the kanji character. An empty string is treated as no readings."
+ },
+ {
+ "type": "string",
+ "description": "String of space-separated tags for the kanji character. An empty string is treated as no tags."
+ }
+ ],
+ "additionalItems": {
+ "type": "string",
+ "description": "A meaning for the kanji character."
+ }
+ }
+} \ No newline at end of file
diff --git a/ext/data/schemas/dictionary-kanji-bank-v3-schema.json b/ext/data/schemas/dictionary-kanji-bank-v3-schema.json
new file mode 100644
index 00000000..a5b82039
--- /dev/null
+++ b/ext/data/schemas/dictionary-kanji-bank-v3-schema.json
@@ -0,0 +1,44 @@
+{
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "type": "array",
+ "description": "Data file containing kanji information.",
+ "additionalItems": {
+ "type": "array",
+ "description": "Information about a single kanji character.",
+ "minItems": 6,
+ "items": [
+ {
+ "type": "string",
+ "description": "Kanji character.",
+ "minLength": 1
+ },
+ {
+ "type": "string",
+ "description": "String of space-separated onyomi readings for the kanji character. An empty string is treated as no readings."
+ },
+ {
+ "type": "string",
+ "description": "String of space-separated kunyomi readings for the kanji character. An empty string is treated as no readings."
+ },
+ {
+ "type": "string",
+ "description": "String of space-separated tags for the kanji character. An empty string is treated as no tags."
+ },
+ {
+ "type": "array",
+ "description": "Array of meanings for the kanji character.",
+ "items": {
+ "type": "string",
+ "description": "A meaning for the kanji character."
+ }
+ },
+ {
+ "type": "object",
+ "description": "Various stats for the kanji character.",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
+ ]
+ }
+} \ No newline at end of file
diff --git a/ext/data/schemas/dictionary-kanji-meta-bank-v3-schema.json b/ext/data/schemas/dictionary-kanji-meta-bank-v3-schema.json
new file mode 100644
index 00000000..62479026
--- /dev/null
+++ b/ext/data/schemas/dictionary-kanji-meta-bank-v3-schema.json
@@ -0,0 +1,25 @@
+{
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "type": "array",
+ "description": "Custom metadata for kanji characters.",
+ "additionalItems": {
+ "type": "array",
+ "description": "Metadata about a single kanji character.",
+ "minItems": 3,
+ "items": [
+ {
+ "type": "string",
+ "minLength": 1
+ },
+ {
+ "type": "string",
+ "enum": ["freq"],
+ "description": "Type of data. \"freq\" corresponds to frequency information."
+ },
+ {
+ "type": ["string", "number"],
+ "description": "Data for the character."
+ }
+ ]
+ }
+} \ No newline at end of file
diff --git a/ext/data/schemas/dictionary-tag-bank-v3-schema.json b/ext/data/schemas/dictionary-tag-bank-v3-schema.json
new file mode 100644
index 00000000..ee5ca64d
--- /dev/null
+++ b/ext/data/schemas/dictionary-tag-bank-v3-schema.json
@@ -0,0 +1,32 @@
+{
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "type": "array",
+ "description": "Data file containing tag information for terms and kanji.",
+ "additionalItems": {
+ "type": "array",
+ "description": "Information about a single tag.",
+ "minItems": 5,
+ "items": [
+ {
+ "type": "string",
+ "description": "Tag name."
+ },
+ {
+ "type": "string",
+ "description": "Category for the tag."
+ },
+ {
+ "type": "number",
+ "description": "Sorting order for the tag."
+ },
+ {
+ "type": "string",
+ "description": "Notes for the tag."
+ },
+ {
+ "type": "number",
+ "description": "Score used to determine popularity. Negative values are more rare and positive values are more frequent. This score is also used to sort search results."
+ }
+ ]
+ }
+} \ No newline at end of file
diff --git a/ext/data/schemas/dictionary-term-bank-v1-schema.json b/ext/data/schemas/dictionary-term-bank-v1-schema.json
new file mode 100644
index 00000000..6ffb26e6
--- /dev/null
+++ b/ext/data/schemas/dictionary-term-bank-v1-schema.json
@@ -0,0 +1,36 @@
+{
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "type": "array",
+ "description": "Data file containing term and expression information.",
+ "additionalItems": {
+ "type": "array",
+ "description": "Information about a single term/expression.",
+ "minItems": 5,
+ "items": [
+ {
+ "type": "string",
+ "description": "Term or expression."
+ },
+ {
+ "type": "string",
+ "description": "Reading of the term/expression, or an empty string if the reading is the same as the term/expression."
+ },
+ {
+ "type": ["string", "null"],
+ "description": "String of space-separated tags for the definition. An empty string is treated as no tags."
+ },
+ {
+ "type": "string",
+ "description": "String of space-separated rule identifiers for the definition which is used to validate delinflection. Valid rule identifiers are: v1: ichidan verb; v5: godan verb; vs: suru verb; vk: kuru verb; adj-i: i-adjective. An empty string corresponds to words which aren't inflected, such as nouns."
+ },
+ {
+ "type": "number",
+ "description": "Score used to determine popularity. Negative values are more rare and positive values are more frequent. This score is also used to sort search results."
+ }
+ ],
+ "additionalItems": {
+ "type": "string",
+ "description": "Single definition for the term/expression."
+ }
+ }
+} \ No newline at end of file
diff --git a/ext/data/schemas/dictionary-term-bank-v3-schema.json b/ext/data/schemas/dictionary-term-bank-v3-schema.json
new file mode 100644
index 00000000..4790e561
--- /dev/null
+++ b/ext/data/schemas/dictionary-term-bank-v3-schema.json
@@ -0,0 +1,125 @@
+{
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "type": "array",
+ "description": "Data file containing term and expression information.",
+ "additionalItems": {
+ "type": "array",
+ "description": "Information about a single term/expression.",
+ "minItems": 8,
+ "items": [
+ {
+ "type": "string",
+ "description": "Term or expression."
+ },
+ {
+ "type": "string",
+ "description": "Reading of the term/expression, or an empty string if the reading is the same as the term/expression."
+ },
+ {
+ "type": ["string", "null"],
+ "description": "String of space-separated tags for the definition. An empty string is treated as no tags."
+ },
+ {
+ "type": "string",
+ "description": "String of space-separated rule identifiers for the definition which is used to validate delinflection. Valid rule identifiers are: v1: ichidan verb; v5: godan verb; vs: suru verb; vk: kuru verb; adj-i: i-adjective. An empty string corresponds to words which aren't inflected, such as nouns."
+ },
+ {
+ "type": "number",
+ "description": "Score used to determine popularity. Negative values are more rare and positive values are more frequent. This score is also used to sort search results."
+ },
+ {
+ "type": "array",
+ "description": "Array of definitions for the term/expression.",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string",
+ "description": "Single definition for the term/expression."
+ },
+ {
+ "type": "object",
+ "description": "Single detailed definition for the term/expression.",
+ "required": [
+ "type"
+ ],
+ "properties": {
+ "type": {
+ "type": "string",
+ "description": "The type of the data for this definition.",
+ "enum": ["text", "image"]
+ }
+ },
+ "oneOf": [
+ {
+ "required": [
+ "type",
+ "text"
+ ],
+ "additionalProperties": false,
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": ["text"]
+ },
+ "text": {
+ "type": "string",
+ "description": "Single definition for the term/expression."
+ }
+ }
+ },
+ {
+ "required": [
+ "type",
+ "path"
+ ],
+ "additionalProperties": false,
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": ["image"]
+ },
+ "path": {
+ "type": "string",
+ "description": "Path to the image file in the archive."
+ },
+ "width": {
+ "type": "integer",
+ "description": "Preferred width of the image.",
+ "minimum": 1
+ },
+ "height": {
+ "type": "integer",
+ "description": "Preferred width of the image.",
+ "minimum": 1
+ },
+ "title": {
+ "type": "string",
+ "description": "Hover text for the image."
+ },
+ "description": {
+ "type": "string",
+ "description": "Description of the image."
+ },
+ "pixelated": {
+ "type": "boolean",
+ "description": "Whether or not the image should appear pixelated at sizes larger than the image's native resolution.",
+ "default": false
+ }
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "type": "integer",
+ "description": "Sequence number for the term/expression. Terms/expressions with the same sequence number can be shown together when the \"resultOutputMode\" option is set to \"merge\"."
+ },
+ {
+ "type": "string",
+ "description": "String of space-separated tags for the term/expression. An empty string is treated as no tags."
+ }
+ ]
+ }
+} \ No newline at end of file
diff --git a/ext/data/schemas/dictionary-term-meta-bank-v3-schema.json b/ext/data/schemas/dictionary-term-meta-bank-v3-schema.json
new file mode 100644
index 00000000..ffffb546
--- /dev/null
+++ b/ext/data/schemas/dictionary-term-meta-bank-v3-schema.json
@@ -0,0 +1,105 @@
+{
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "type": "array",
+ "description": "Custom metadata for terms/expressions.",
+ "additionalItems": {
+ "type": "array",
+ "description": "Metadata about a single term/expression.",
+ "minItems": 3,
+ "items": [
+ {
+ "type": "string",
+ "description": "Term or expression."
+ },
+ {
+ "type": "string",
+ "enum": ["freq", "pitch"],
+ "description": "Type of data. \"freq\" corresponds to frequency information; \"pitch\" corresponds to pitch information."
+ },
+ {
+ "description": "Data for the term/expression."
+ }
+ ],
+ "oneOf": [
+ {
+ "items": [
+ {},
+ {"enum": ["freq"]},
+ {
+ "oneOf": [
+ {
+ "type": ["string", "number"],
+ "description": "Frequency information for the term or expression."
+ },
+ {
+ "type": ["object"],
+ "required": [
+ "reading",
+ "frequency"
+ ],
+ "additionalProperties": false,
+ "properties": {
+ "reading": {
+ "type": "string",
+ "description": "Reading for the term or expression."
+ },
+ "frequency": {
+ "type": ["string", "number"],
+ "description": "Frequency information for the term or expression."
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "items": [
+ {},
+ {"enum": ["pitch"]},
+ {
+ "type": ["object"],
+ "description": "Pitch accent information for the term or expression.",
+ "required": [
+ "reading",
+ "pitches"
+ ],
+ "additionalProperties": false,
+ "properties": {
+ "reading": {
+ "type": "string",
+ "description": "Reading for the term or expression."
+ },
+ "pitches": {
+ "type": "array",
+ "description": "List of different pitch accent information for the term and reading combination.",
+ "additionalItems": {
+ "type": "object",
+ "required": [
+ "position"
+ ],
+ "additionalProperties": false,
+ "properties": {
+ "position": {
+ "type": "integer",
+ "description": "Mora position of the pitch accent downstep. A value of 0 indicates that the word does not have a downstep (heiban).",
+ "minimum": 0
+ },
+ "tags": {
+ "type": "array",
+ "description": "List of tags for this pitch accent.",
+ "items": {
+ "type": "string",
+ "description": "Tag for this pitch accent. This typically corresponds to a certain type of part of speech."
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ ]
+ }
+} \ No newline at end of file
diff --git a/ext/data/schemas/options-schema.json b/ext/data/schemas/options-schema.json
new file mode 100644
index 00000000..f4f5d0ca
--- /dev/null
+++ b/ext/data/schemas/options-schema.json
@@ -0,0 +1,1101 @@
+{
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "type": "object",
+ "required": [
+ "version",
+ "profiles",
+ "profileCurrent",
+ "global"
+ ],
+ "properties": {
+ "version": {
+ "type": "integer",
+ "minimum": 0,
+ "default": 0
+ },
+ "profiles": {
+ "type": "array",
+ "minItems": 1,
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "conditionGroups",
+ "options"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "default": "Default"
+ },
+ "conditionGroups": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "conditions"
+ ],
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "type",
+ "operator",
+ "value"
+ ],
+ "properties": {
+ "type": {
+ "type": "string"
+ },
+ "operator": {
+ "type": "string"
+ },
+ "value": {}
+ }
+ }
+ }
+ }
+ }
+ },
+ "options": {
+ "type": "object",
+ "required": [
+ "general",
+ "popupWindow",
+ "audio",
+ "scanning",
+ "translation",
+ "dictionaries",
+ "parsing",
+ "anki",
+ "sentenceParsing",
+ "inputs",
+ "clipboard"
+ ],
+ "properties": {
+ "general": {
+ "type": "object",
+ "required": [
+ "enable",
+ "resultOutputMode",
+ "debugInfo",
+ "maxResults",
+ "showAdvanced",
+ "popupDisplayMode",
+ "popupWidth",
+ "popupHeight",
+ "popupHorizontalOffset",
+ "popupVerticalOffset",
+ "popupHorizontalOffset2",
+ "popupVerticalOffset2",
+ "popupHorizontalTextPosition",
+ "popupVerticalTextPosition",
+ "popupScalingFactor",
+ "popupScaleRelativeToPageZoom",
+ "popupScaleRelativeToVisualViewport",
+ "showGuide",
+ "compactTags",
+ "glossaryLayoutMode",
+ "mainDictionary",
+ "popupTheme",
+ "popupOuterTheme",
+ "customPopupCss",
+ "customPopupOuterCss",
+ "enableWanakana",
+ "showPitchAccentDownstepNotation",
+ "showPitchAccentPositionNotation",
+ "showPitchAccentGraph",
+ "showIframePopupsInRootFrame",
+ "useSecurePopupFrameUrl",
+ "usePopupShadowDom",
+ "usePopupWindow",
+ "popupCurrentIndicatorMode",
+ "popupActionBarVisibility",
+ "popupActionBarLocation"
+ ],
+ "properties": {
+ "enable": {
+ "type": "boolean",
+ "default": true
+ },
+ "resultOutputMode": {
+ "type": "string",
+ "enum": ["group", "merge", "split"],
+ "default": "group"
+ },
+ "debugInfo": {
+ "type": "boolean",
+ "default": false
+ },
+ "maxResults": {
+ "type": "integer",
+ "minimum": 1,
+ "default": 32
+ },
+ "showAdvanced": {
+ "type": "boolean",
+ "default": false
+ },
+ "popupDisplayMode": {
+ "type": "string",
+ "enum": ["default", "full-width"],
+ "default": "default"
+ },
+ "popupWidth": {
+ "type": "number",
+ "minimum": 0,
+ "default": 400
+ },
+ "popupHeight": {
+ "type": "number",
+ "minimum": 0,
+ "default": 250
+ },
+ "popupHorizontalOffset": {
+ "type": "number",
+ "default": 0
+ },
+ "popupVerticalOffset": {
+ "type": "number",
+ "default": 10
+ },
+ "popupHorizontalOffset2": {
+ "type": "number",
+ "default": 10
+ },
+ "popupVerticalOffset2": {
+ "type": "number",
+ "default": 0
+ },
+ "popupHorizontalTextPosition": {
+ "type": "string",
+ "enum": ["below", "above"],
+ "default": "below"
+ },
+ "popupVerticalTextPosition": {
+ "type": "string",
+ "enum": ["default", "before", "after", "left", "right"],
+ "default": "before"
+ },
+ "popupScalingFactor": {
+ "type": "number",
+ "default": 1
+ },
+ "popupScaleRelativeToPageZoom": {
+ "type": "boolean",
+ "default": false
+ },
+ "popupScaleRelativeToVisualViewport": {
+ "type": "boolean",
+ "default": true
+ },
+ "showGuide": {
+ "type": "boolean",
+ "default": true
+ },
+ "compactTags": {
+ "type": "boolean",
+ "default": false
+ },
+ "glossaryLayoutMode": {
+ "type": "string",
+ "enum": ["default", "compact"],
+ "default": "default"
+ },
+ "mainDictionary": {
+ "type": "string"
+ },
+ "popupTheme": {
+ "type": "string",
+ "enum": ["default", "dark"],
+ "default": "default"
+ },
+ "popupOuterTheme": {
+ "type": "string",
+ "enum": ["default", "dark", "auto"],
+ "default": "default"
+ },
+ "customPopupCss": {
+ "type": "string",
+ "default": ""
+ },
+ "customPopupOuterCss": {
+ "type": "string",
+ "default": ""
+ },
+ "enableWanakana": {
+ "type": "boolean",
+ "default": true
+ },
+ "showPitchAccentDownstepNotation": {
+ "type": "boolean",
+ "default": true
+ },
+ "showPitchAccentPositionNotation": {
+ "type": "boolean",
+ "default": true
+ },
+ "showPitchAccentGraph": {
+ "type": "boolean",
+ "default": false
+ },
+ "showIframePopupsInRootFrame": {
+ "type": "boolean",
+ "default": false
+ },
+ "useSecurePopupFrameUrl": {
+ "type": "boolean",
+ "default": true
+ },
+ "usePopupShadowDom": {
+ "type": "boolean",
+ "default": true
+ },
+ "usePopupWindow": {
+ "type": "boolean",
+ "default": false
+ },
+ "popupCurrentIndicatorMode": {
+ "type": "string",
+ "enum": ["none", "asterisk", "triangle", "bar-left", "bar-right", "dot-left", "dot-right"],
+ "default": "triangle"
+ },
+ "popupActionBarVisibility": {
+ "type": "string",
+ "enum": ["auto", "always"],
+ "default": "auto"
+ },
+ "popupActionBarLocation": {
+ "type": "string",
+ "enum": ["left", "right", "top", "bottom"],
+ "default": "top"
+ }
+ }
+ },
+ "popupWindow": {
+ "type": "object",
+ "required": [
+ "width",
+ "height",
+ "left",
+ "top",
+ "useLeft",
+ "useTop",
+ "windowType",
+ "windowState"
+ ],
+ "properties": {
+ "width": {
+ "type": "integer",
+ "minimum": 0,
+ "default": 400
+ },
+ "height": {
+ "type": "integer",
+ "minimum": 0,
+ "default": 250
+ },
+ "left": {
+ "type": "integer",
+ "default": 0
+ },
+ "top": {
+ "type": "integer",
+ "default": 0
+ },
+ "useLeft": {
+ "type": "boolean",
+ "default": false
+ },
+ "useTop": {
+ "type": "boolean",
+ "default": false
+ },
+ "windowType": {
+ "type": "string",
+ "enum": ["normal", "popup"],
+ "default": "popup"
+ },
+ "windowState": {
+ "type": "string",
+ "enum": ["normal", "maximized", "fullscreen"],
+ "default": "normal"
+ }
+ }
+ },
+ "audio": {
+ "type": "object",
+ "required": [
+ "enabled",
+ "sources",
+ "volume",
+ "autoPlay",
+ "customSourceUrl",
+ "customSourceType",
+ "textToSpeechVoice"
+ ],
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "default": true
+ },
+ "sources": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "enum": [
+ "jpod101",
+ "jpod101-alternate",
+ "jisho",
+ "text-to-speech",
+ "text-to-speech-reading",
+ "custom"
+ ],
+ "default": "jpod101"
+ },
+ "default": [
+ "jpod101"
+ ]
+ },
+ "volume": {
+ "type": "number",
+ "minimum": 0,
+ "maximum": 100,
+ "default": 100
+ },
+ "autoPlay": {
+ "type": "boolean",
+ "default": false
+ },
+ "customSourceUrl": {
+ "type": "string",
+ "default": ""
+ },
+ "customSourceType": {
+ "type": "string",
+ "enum": ["audio", "json"],
+ "default": "audio"
+ },
+ "textToSpeechVoice": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ },
+ "scanning": {
+ "type": "object",
+ "required": [
+ "inputs",
+ "preventMiddleMouse",
+ "touchInputEnabled",
+ "pointerEventsEnabled",
+ "selectText",
+ "alphanumeric",
+ "autoHideResults",
+ "delay",
+ "hideDelay",
+ "length",
+ "deepDomScan",
+ "popupNestingMaxDepth",
+ "enablePopupSearch",
+ "enableOnPopupExpressions",
+ "enableOnSearchPage",
+ "enableSearchTags",
+ "layoutAwareScan"
+ ],
+ "properties": {
+ "inputs": {
+ "type": "array",
+ "default": [
+ {
+ "include": "shift",
+ "exclude": "mouse0",
+ "types": {
+ "mouse": true,
+ "touch": false,
+ "pen": false
+ },
+ "options": {
+ "showAdvanced": false,
+ "searchTerms": true,
+ "searchKanji": true,
+ "scanOnTouchMove": true,
+ "scanOnPenHover": true,
+ "scanOnPenPress": true,
+ "scanOnPenRelease": false,
+ "preventTouchScrolling": false
+ }
+ },
+ {
+ "include": "",
+ "exclude": "",
+ "types": {
+ "mouse": false,
+ "touch": true,
+ "pen": true
+ },
+ "options": {
+ "showAdvanced": false,
+ "searchTerms": true,
+ "searchKanji": true,
+ "scanOnTouchMove": true,
+ "scanOnPenHover": true,
+ "scanOnPenPress": true,
+ "scanOnPenRelease": false,
+ "preventTouchScrolling": true
+ }
+ }
+ ],
+ "items": {
+ "required": [
+ "include",
+ "exclude",
+ "types",
+ "options"
+ ],
+ "properties": {
+ "include": {
+ "type": "string",
+ "default": "shift"
+ },
+ "exclude": {
+ "type": "string",
+ "default": ""
+ },
+ "types": {
+ "type": "object",
+ "required": [
+ "mouse",
+ "touch",
+ "pen"
+ ],
+ "properties": {
+ "mouse": {
+ "type": "boolean",
+ "default": true
+ },
+ "touch": {
+ "type": "boolean",
+ "default": true
+ },
+ "pen": {
+ "type": "boolean",
+ "default": true
+ }
+ }
+ },
+ "options": {
+ "type": "object",
+ "required": [
+ "showAdvanced",
+ "searchTerms",
+ "searchKanji",
+ "scanOnTouchMove",
+ "scanOnPenHover",
+ "scanOnPenPress",
+ "scanOnPenRelease",
+ "preventTouchScrolling"
+ ],
+ "properties": {
+ "showAdvanced": {
+ "type": "boolean",
+ "default": false
+ },
+ "searchTerms": {
+ "type": "boolean",
+ "default": true
+ },
+ "searchKanji": {
+ "type": "boolean",
+ "default": true
+ },
+ "scanOnTouchMove": {
+ "type": "boolean",
+ "default": true
+ },
+ "scanOnPenHover": {
+ "type": "boolean",
+ "default": true
+ },
+ "scanOnPenPress": {
+ "type": "boolean",
+ "default": true
+ },
+ "scanOnPenRelease": {
+ "type": "boolean",
+ "default": false
+ },
+ "preventTouchScrolling": {
+ "type": "boolean",
+ "default": true
+ }
+ }
+ }
+ }
+ }
+ },
+ "preventMiddleMouse": {
+ "type": "object",
+ "required": [
+ "onWebPages",
+ "onPopupPages",
+ "onSearchPages",
+ "onSearchQuery"
+ ],
+ "properties": {
+ "onWebPages": {
+ "type": "boolean",
+ "default": false
+ },
+ "onPopupPages": {
+ "type": "boolean",
+ "default": false
+ },
+ "onSearchPages": {
+ "type": "boolean",
+ "default": false
+ },
+ "onSearchQuery": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ },
+ "touchInputEnabled": {
+ "type": "boolean",
+ "default": true
+ },
+ "pointerEventsEnabled": {
+ "type": "boolean",
+ "default": false
+ },
+ "selectText": {
+ "type": "boolean",
+ "default": true
+ },
+ "alphanumeric": {
+ "type": "boolean",
+ "default": true
+ },
+ "autoHideResults": {
+ "type": "boolean",
+ "default": false
+ },
+ "delay": {
+ "type": "number",
+ "minimum": 0,
+ "default": 20
+ },
+ "hideDelay": {
+ "type": "number",
+ "minimum": 0,
+ "default": 0
+ },
+ "length": {
+ "type": "integer",
+ "minimum": 1,
+ "default": 10
+ },
+ "deepDomScan": {
+ "type": "boolean",
+ "default": false
+ },
+ "popupNestingMaxDepth": {
+ "type": "integer",
+ "minimum": 0,
+ "default": 0
+ },
+ "enablePopupSearch": {
+ "type": "boolean",
+ "default": false
+ },
+ "enableOnPopupExpressions": {
+ "type": "boolean",
+ "default": false
+ },
+ "enableOnSearchPage": {
+ "type": "boolean",
+ "default": true
+ },
+ "enableSearchTags": {
+ "type": "boolean",
+ "default": false
+ },
+ "layoutAwareScan": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ },
+ "translation": {
+ "type": "object",
+ "required": [
+ "convertHalfWidthCharacters",
+ "convertNumericCharacters",
+ "convertAlphabeticCharacters",
+ "convertHiraganaToKatakana",
+ "convertKatakanaToHiragana",
+ "collapseEmphaticSequences",
+ "textReplacements"
+ ],
+ "properties": {
+ "convertHalfWidthCharacters": {
+ "type": "string",
+ "enum": ["false", "true", "variant"],
+ "default": "false"
+ },
+ "convertNumericCharacters": {
+ "type": "string",
+ "enum": ["false", "true", "variant"],
+ "default": "false"
+ },
+ "convertAlphabeticCharacters": {
+ "type": "string",
+ "enum": ["false", "true", "variant"],
+ "default": "false"
+ },
+ "convertHiraganaToKatakana": {
+ "type": "string",
+ "enum": ["false", "true", "variant"],
+ "default": "false"
+ },
+ "convertKatakanaToHiragana": {
+ "type": "string",
+ "enum": ["false", "true", "variant"],
+ "default": "variant"
+ },
+ "collapseEmphaticSequences": {
+ "type": "string",
+ "enum": ["false", "true", "full"],
+ "default": "false"
+ },
+ "textReplacements": {
+ "type": "object",
+ "required": [
+ "searchOriginal",
+ "groups"
+ ],
+ "properties": {
+ "searchOriginal": {
+ "type": "boolean",
+ "default": true
+ },
+ "groups": {
+ "type": "array",
+ "items": {
+ "type": "array",
+ "items": {
+ "required": [
+ "pattern",
+ "ignoreCase",
+ "replacement"
+ ],
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "default": ""
+ },
+ "ignoreCase": {
+ "type": "boolean",
+ "default": false
+ },
+ "replacement": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "dictionaries": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "object",
+ "required": [
+ "priority",
+ "enabled",
+ "allowSecondarySearches"
+ ],
+ "properties": {
+ "priority": {
+ "type": "number",
+ "default": 0
+ },
+ "enabled": {
+ "type": "boolean",
+ "default": true
+ },
+ "allowSecondarySearches": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ }
+ },
+ "parsing": {
+ "type": "object",
+ "required": [
+ "enableScanningParser",
+ "enableMecabParser",
+ "selectedParser",
+ "termSpacing",
+ "readingMode"
+ ],
+ "properties": {
+ "enableScanningParser": {
+ "type": "boolean",
+ "default": true
+ },
+ "enableMecabParser": {
+ "type": "boolean",
+ "default": false
+ },
+ "selectedParser": {
+ "type": ["string", "null"],
+ "default": null
+ },
+ "termSpacing": {
+ "type": "boolean",
+ "default": true
+ },
+ "readingMode": {
+ "type": "string",
+ "enum": ["hiragana", "katakana", "romaji", "none"],
+ "default": "hiragana"
+ }
+ }
+ },
+ "anki": {
+ "type": "object",
+ "required": [
+ "enable",
+ "server",
+ "tags",
+ "screenshot",
+ "terms",
+ "kanji",
+ "duplicateScope",
+ "checkForDuplicates",
+ "fieldTemplates",
+ "suspendNewCards"
+ ],
+ "properties": {
+ "enable": {
+ "type": "boolean",
+ "default": false
+ },
+ "server": {
+ "type": "string",
+ "default": "http://127.0.0.1:8765"
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "default": [
+ "yomichan"
+ ]
+ },
+ "screenshot": {
+ "type": "object",
+ "required": [
+ "format",
+ "quality"
+ ],
+ "properties": {
+ "format": {
+ "type": "string",
+ "enum": ["png", "jpeg"],
+ "default": "png"
+ },
+ "quality": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 100,
+ "default": 92
+ }
+ }
+ },
+ "terms": {
+ "type": "object",
+ "required": [
+ "deck",
+ "model",
+ "fields"
+ ],
+ "properties": {
+ "deck": {
+ "type": "string",
+ "default": ""
+ },
+ "model": {
+ "type": "string",
+ "default": ""
+ },
+ "fields": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ }
+ },
+ "kanji": {
+ "type": "object",
+ "required": [
+ "deck",
+ "model",
+ "fields"
+ ],
+ "properties": {
+ "deck": {
+ "type": "string",
+ "default": ""
+ },
+ "model": {
+ "type": "string",
+ "default": ""
+ },
+ "fields": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ }
+ },
+ "duplicateScope": {
+ "type": "string",
+ "default": "collection",
+ "enum": ["collection", "deck", "deck-root"]
+ },
+ "checkForDuplicates": {
+ "type": "boolean",
+ "default": true
+ },
+ "fieldTemplates": {
+ "type": ["string", "null"],
+ "default": null
+ },
+ "suspendNewCards": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ },
+ "sentenceParsing": {
+ "type": "object",
+ "required": [
+ "scanExtent",
+ "enableTerminationCharacters",
+ "terminationCharacters"
+ ],
+ "properties": {
+ "scanExtent": {
+ "type": "integer",
+ "minimum": 0,
+ "default": 200
+ },
+ "enableTerminationCharacters": {
+ "type": "boolean",
+ "default": true
+ },
+ "terminationCharacters": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "enabled",
+ "character1",
+ "character2",
+ "includeCharacterAtStart",
+ "includeCharacterAtEnd"
+ ],
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "default": true
+ },
+ "character1": {
+ "type": "string",
+ "default": "\"",
+ "minLength": 1,
+ "maxLength": 1
+ },
+ "character2": {
+ "type": ["string", "null"],
+ "default": "\"",
+ "minLength": 1,
+ "maxLength": 1
+ },
+ "includeCharacterAtStart": {
+ "type": "boolean",
+ "default": false
+ },
+ "includeCharacterAtEnd": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ },
+ "default": [
+ {"enabled": true, "character1": "「", "character2": "」", "includeCharacterAtStart": false, "includeCharacterAtEnd": false},
+ {"enabled": true, "character1": "『", "character2": "』", "includeCharacterAtStart": false, "includeCharacterAtEnd": false},
+ {"enabled": true, "character1": "\"", "character2": "\"", "includeCharacterAtStart": false, "includeCharacterAtEnd": false},
+ {"enabled": true, "character1": "'", "character2": "'", "includeCharacterAtStart": false, "includeCharacterAtEnd": false},
+ {"enabled": true, "character1": ".", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true},
+ {"enabled": true, "character1": "!", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true},
+ {"enabled": true, "character1": "?", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true},
+ {"enabled": true, "character1": ".", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true},
+ {"enabled": true, "character1": "。", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true},
+ {"enabled": true, "character1": "!", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true},
+ {"enabled": true, "character1": "?", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true},
+ {"enabled": true, "character1": "…", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true}
+ ]
+ }
+ }
+ },
+ "inputs": {
+ "type": "object",
+ "required": [
+ "hotkeys"
+ ],
+ "properties": {
+ "hotkeys": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "action",
+ "key",
+ "modifiers",
+ "scopes",
+ "enabled"
+ ],
+ "properties": {
+ "action": {
+ "type": "string",
+ "default": ""
+ },
+ "key": {
+ "type": ["string", "null"],
+ "default": null
+ },
+ "modifiers": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "enum": ["alt", "ctrl", "shift", "meta"],
+ "default": "alt"
+ }
+ },
+ "scopes": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "enum": ["popup", "search", "web"],
+ "default": "popup"
+ },
+ "default": ["popup", "search"]
+ },
+ "enabled": {
+ "type": "boolean",
+ "default": true
+ }
+ }
+ },
+ "default": [
+ {"action": "close", "key": "Escape", "modifiers": [], "scopes": ["popup"], "enabled": true},
+ {"action": "focusSearchBox", "key": "Escape", "modifiers": [], "scopes": ["search"], "enabled": true},
+ {"action": "previousEntry3", "key": "PageUp", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true},
+ {"action": "nextEntry3", "key": "PageDown", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true},
+ {"action": "lastEntry", "key": "End", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true},
+ {"action": "firstEntry", "key": "Home", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true},
+ {"action": "previousEntry", "key": "ArrowUp", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true},
+ {"action": "nextEntry", "key": "ArrowDown", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true},
+ {"action": "historyBackward", "key": "KeyB", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true},
+ {"action": "historyForward", "key": "KeyF", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true},
+ {"action": "addNoteKanji", "key": "KeyK", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true},
+ {"action": "addNoteTermKanji", "key": "KeyE", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true},
+ {"action": "addNoteTermKana", "key": "KeyR", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true},
+ {"action": "playAudio", "key": "KeyP", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true},
+ {"action": "viewNote", "key": "KeyV", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true},
+ {"action": "copyHostSelection", "key": "KeyC", "modifiers": ["ctrl"], "scopes": ["popup"], "enabled": true}
+ ]
+ }
+ }
+ },
+ "clipboard": {
+ "type": "object",
+ "required": [
+ "enableBackgroundMonitor",
+ "enableSearchPageMonitor",
+ "autoSearchContent",
+ "maximumSearchLength"
+ ],
+ "properties": {
+ "enableBackgroundMonitor": {
+ "type": "boolean",
+ "default": false
+ },
+ "enableSearchPageMonitor": {
+ "type": "boolean",
+ "default": false
+ },
+ "autoSearchContent": {
+ "type": "boolean",
+ "default": true
+ },
+ "maximumSearchLength": {
+ "type": "integer",
+ "default": 1000,
+ "minimum": 0
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "profileCurrent": {
+ "type": "integer",
+ "minimum": 0,
+ "default": 0
+ },
+ "global": {
+ "type": "object",
+ "required": [
+ "database",
+ "useSettingsV2"
+ ],
+ "properties": {
+ "database": {
+ "type": "object",
+ "required": [
+ "prefixWildcardsSupported"
+ ],
+ "properties": {
+ "prefixWildcardsSupported": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ },
+ "useSettingsV2": {
+ "type": "boolean",
+ "default": true
+ }
+ }
+ }
+ }
+}