diff --git a/bin/copy-dist.ts b/bin/copy-dist.ts
index b3f79ad56..94014c460 100644
--- a/bin/copy-dist.ts
+++ b/bin/copy-dist.ts
@@ -41,7 +41,8 @@ try {
"./src/public/robots.txt",
"./src/public/fonts",
"./src/public/stylesheets",
- "./src/public/translations"
+ "./src/public/translations",
+ "./packages/turndown-plugin-gfm/src"
]);
for (const asset of assetsToCopy) {
diff --git a/docs/User Guide/!!!meta.json b/docs/User Guide/!!!meta.json
index 7872606cf..6b10f53da 100644
--- a/docs/User Guide/!!!meta.json
+++ b/docs/User Guide/!!!meta.json
@@ -1,6 +1,6 @@
{
"formatVersion": 2,
- "appVersion": "0.92.3-beta",
+ "appVersion": "0.92.4",
"files": [
{
"isClone": false,
@@ -9,7 +9,7 @@
"pOsGYCXsbNQG"
],
"title": "User Guide",
- "notePosition": 10,
+ "notePosition": 130,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -20,6 +20,1389 @@
"attachments": [],
"dirFileName": "User Guide",
"children": [
+ {
+ "isClone": false,
+ "noteId": "tC7s2alapj8V",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V"
+ ],
+ "title": "Advanced Usage",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-rocket",
+ "isInheritable": false,
+ "position": 10
+ }
+ ],
+ "format": "markdown",
+ "attachments": [],
+ "dirFileName": "Advanced Usage",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "zEY4DaJG4YT5",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "zEY4DaJG4YT5"
+ ],
+ "title": "Attributes",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/markdown",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "R7abl2fc6Mxi",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "l0tKav7yLHGF",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "p9kXRFAkwN4o",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "J5Ex1ZrMbyJ6",
+ "isInheritable": false,
+ "position": 40
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "9sRHySam5fXb",
+ "isInheritable": false,
+ "position": 50
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "u3YFHC9tQlpm",
+ "isInheritable": false,
+ "position": 60
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "R9pX4DGra2Vt",
+ "isInheritable": false,
+ "position": 70
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "47ZrP6FNuoG8",
+ "isInheritable": false,
+ "position": 80
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "OFXdgB2nNk1F",
+ "isInheritable": false,
+ "position": 90
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "bwZpz2ajCEwO",
+ "isInheritable": false,
+ "position": 100
+ },
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "attributes",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "format": "markdown",
+ "dataFileName": "Attributes.md",
+ "attachments": [
+ {
+ "attachmentId": "P4eRVtGFoHh2",
+ "title": "image.png",
+ "role": "image",
+ "mime": "image/jpg",
+ "position": 10,
+ "dataFileName": "Attributes_image.png"
+ }
+ ],
+ "dirFileName": "Attributes",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "bwZpz2ajCEwO",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "zEY4DaJG4YT5",
+ "bwZpz2ajCEwO"
+ ],
+ "title": "Attribute Inheritance",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/markdown",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "KC1HB96bqqHX",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "attribute-inheritance",
+ "isInheritable": false,
+ "position": 20
+ }
+ ],
+ "format": "markdown",
+ "dataFileName": "Attribute Inheritance.md",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "OFXdgB2nNk1F",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "zEY4DaJG4YT5",
+ "OFXdgB2nNk1F"
+ ],
+ "title": "Promoted Attributes",
+ "notePosition": 20,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/markdown",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "zEY4DaJG4YT5",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "bwZpz2ajCEwO",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "relation",
+ "name": "imageLink",
+ "value": "rxH2Dm1jn6YT",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "promoted-attributes",
+ "isInheritable": false,
+ "position": 20
+ }
+ ],
+ "format": "markdown",
+ "dataFileName": "Promoted Attributes.md",
+ "attachments": [
+ {
+ "attachmentId": "4EcBRWF9iCk2",
+ "title": "image.png",
+ "role": "image",
+ "mime": "image/jpg",
+ "position": 10,
+ "dataFileName": "Promoted Attributes_image.png"
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "KC1HB96bqqHX",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "zEY4DaJG4YT5",
+ "KC1HB96bqqHX"
+ ],
+ "title": "Template",
+ "notePosition": 30,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/markdown",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "bwZpz2ajCEwO",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "OFXdgB2nNk1F",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "xYjQUYhpbUEW",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "l0tKav7yLHGF",
+ "isInheritable": false,
+ "position": 40
+ },
+ {
+ "type": "relation",
+ "name": "imageLink",
+ "value": "Y8kzZ5MSZLCC",
+ "isInheritable": false,
+ "position": 50
+ },
+ {
+ "type": "relation",
+ "name": "imageLink",
+ "value": "uuGrYX41lWN0",
+ "isInheritable": false,
+ "position": 60
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "9sRHySam5fXb",
+ "isInheritable": false,
+ "position": 70
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "wX4HbRucYSDD",
+ "isInheritable": false,
+ "position": 80
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "iRwzGnHPzonm",
+ "isInheritable": false,
+ "position": 90
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "47ZrP6FNuoG8",
+ "isInheritable": false,
+ "position": 100
+ },
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "template",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "format": "markdown",
+ "dataFileName": "Template.md",
+ "attachments": []
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "iRwzGnHPzonm",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "iRwzGnHPzonm"
+ ],
+ "title": "Relation Map",
+ "notePosition": 20,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/markdown",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "zEY4DaJG4YT5",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "OFXdgB2nNk1F",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "wX4HbRucYSDD",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "BCkXAVs63Ttv",
+ "isInheritable": false,
+ "position": 40
+ },
+ {
+ "type": "relation",
+ "name": "imageLink",
+ "value": "EH6qNioOHeyT",
+ "isInheritable": false,
+ "position": 50
+ },
+ {
+ "type": "relation",
+ "name": "imageLink",
+ "value": "xeZPrfi77XPu",
+ "isInheritable": false,
+ "position": 60
+ },
+ {
+ "type": "relation",
+ "name": "imageLink",
+ "value": "N98UhifxrVpZ",
+ "isInheritable": false,
+ "position": 70
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "kBrnXNG3Hplm",
+ "isInheritable": false,
+ "position": 80
+ },
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "relation-map",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "format": "markdown",
+ "dataFileName": "Relation Map.md",
+ "attachments": [
+ {
+ "attachmentId": "x92CIQzusTuc",
+ "title": "relation-map-dev-process-demo.gif",
+ "role": "image",
+ "mime": "image/gif",
+ "position": 10,
+ "dataFileName": "Relation Map_relation-map-.gif"
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "BCkXAVs63Ttv",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "BCkXAVs63Ttv"
+ ],
+ "title": "Note Map",
+ "notePosition": 30,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/markdown",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "zEY4DaJG4YT5",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "iRwzGnHPzonm",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "note-map",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "format": "markdown",
+ "dataFileName": "Note Map.md",
+ "attachments": [
+ {
+ "attachmentId": "F48iB3BbITHb",
+ "title": "image.png",
+ "role": "image",
+ "mime": "image/jpg",
+ "position": 10,
+ "dataFileName": "Note Map_image.png"
+ },
+ {
+ "attachmentId": "scmGuoLQPj8C",
+ "title": "image.png",
+ "role": "image",
+ "mime": "image/jpg",
+ "position": 10,
+ "dataFileName": "1_Note Map_image.png"
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "R9pX4DGra2Vt",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "R9pX4DGra2Vt"
+ ],
+ "title": "Sharing",
+ "notePosition": 50,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/markdown",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "imageLink",
+ "value": "5GcxcE9fP9xX",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "imageLink",
+ "value": "Ky3qOJJMZ731",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "relation",
+ "name": "imageLink",
+ "value": "lCtZz2Z59wPT",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "relation",
+ "name": "imageLink",
+ "value": "jEQNvpyaXIWE",
+ "isInheritable": false,
+ "position": 40
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "WOcw2SLH6tbX",
+ "isInheritable": false,
+ "position": 50
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "bwZpz2ajCEwO",
+ "isInheritable": false,
+ "position": 60
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "6f9hih2hXXZk",
+ "isInheritable": false,
+ "position": 70
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "Wy267RK4M69c",
+ "isInheritable": false,
+ "position": 80
+ },
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "sharing",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-share-alt",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "format": "markdown",
+ "dataFileName": "Sharing.md",
+ "attachments": [],
+ "dirFileName": "Sharing",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "Qjt68inQ2bRj",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "R9pX4DGra2Vt",
+ "Qjt68inQ2bRj"
+ ],
+ "title": "Serving directly the content of a note",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [],
+ "format": "markdown",
+ "dataFileName": "Serving directly the content o.md",
+ "attachments": [
+ {
+ "attachmentId": "eizmhhmocL6L",
+ "title": "image.png",
+ "role": "image",
+ "mime": "image/jpg",
+ "position": 10,
+ "dataFileName": "Serving directly the conte.png"
+ },
+ {
+ "attachmentId": "xicVjsf2Kmaz",
+ "title": "image.png",
+ "role": "image",
+ "mime": "image/jpg",
+ "position": 10,
+ "dataFileName": "1_Serving directly the conte.png"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "5668rwcirq1t",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "5668rwcirq1t"
+ ],
+ "title": "Advanced Showcases",
+ "notePosition": 70,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/markdown",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "CdNpE2pqjmI6",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "OFXdgB2nNk1F",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "wX4HbRucYSDD",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "iRwzGnHPzonm",
+ "isInheritable": false,
+ "position": 40
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "l0tKav7yLHGF",
+ "isInheritable": false,
+ "position": 50
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "R7abl2fc6Mxi",
+ "isInheritable": false,
+ "position": 60
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "xYjQUYhpbUEW",
+ "isInheritable": false,
+ "position": 70
+ },
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "advanced-showcases",
+ "isInheritable": false,
+ "position": 10
+ }
+ ],
+ "format": "markdown",
+ "dataFileName": "Advanced Showcases.md",
+ "attachments": [],
+ "dirFileName": "Advanced Showcases",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "l0tKav7yLHGF",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "5668rwcirq1t",
+ "l0tKav7yLHGF"
+ ],
+ "title": "Day Notes",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/markdown",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "IakOLONlIfGI",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "xYjQUYhpbUEW",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "OFXdgB2nNk1F",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "R7abl2fc6Mxi",
+ "isInheritable": false,
+ "position": 40
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "KC1HB96bqqHX",
+ "isInheritable": false,
+ "position": 50
+ },
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "day-notes",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-calendar",
+ "isInheritable": false,
+ "position": 40
+ }
+ ],
+ "format": "markdown",
+ "dataFileName": "Day Notes.md",
+ "attachments": [
+ {
+ "attachmentId": "9wmaElfXYjWM",
+ "title": "image.png",
+ "role": "image",
+ "mime": "image/png",
+ "position": 10,
+ "dataFileName": "Day Notes_image.png"
+ },
+ {
+ "attachmentId": "FL40jUEj7xLt",
+ "title": "image.png",
+ "role": "image",
+ "mime": "image/jpg",
+ "position": 10,
+ "dataFileName": "1_Day Notes_image.png"
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "R7abl2fc6Mxi",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "5668rwcirq1t",
+ "R7abl2fc6Mxi"
+ ],
+ "title": "Weight Tracker",
+ "notePosition": 20,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/markdown",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "l0tKav7yLHGF",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "GLks18SNjxmC",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "wX4HbRucYSDD",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "OFXdgB2nNk1F",
+ "isInheritable": false,
+ "position": 40
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "KC1HB96bqqHX",
+ "isInheritable": false,
+ "position": 50
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "CdNpE2pqjmI6",
+ "isInheritable": false,
+ "position": 60
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "zEY4DaJG4YT5",
+ "isInheritable": false,
+ "position": 70
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "6f9hih2hXXZk",
+ "isInheritable": false,
+ "position": 80
+ },
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "weight-tracker",
+ "isInheritable": false,
+ "position": 20
+ }
+ ],
+ "format": "markdown",
+ "dataFileName": "Weight Tracker.md",
+ "attachments": [
+ {
+ "attachmentId": "Ah5QpwUUEGf8",
+ "title": "image.png",
+ "role": "image",
+ "mime": "image/jpg",
+ "position": 10,
+ "dataFileName": "Weight Tracker_image.png"
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "xYjQUYhpbUEW",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "5668rwcirq1t",
+ "xYjQUYhpbUEW"
+ ],
+ "title": "Task Manager",
+ "notePosition": 30,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/markdown",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "l0tKav7yLHGF",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "imageLink",
+ "value": "92KeXdKh3Ca1",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "OFXdgB2nNk1F",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "CdNpE2pqjmI6",
+ "isInheritable": false,
+ "position": 40
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "wX4HbRucYSDD",
+ "isInheritable": false,
+ "position": 50
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "IakOLONlIfGI",
+ "isInheritable": false,
+ "position": 60
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "kBrnXNG3Hplm",
+ "isInheritable": false,
+ "position": 70
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "zEY4DaJG4YT5",
+ "isInheritable": false,
+ "position": 80
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "bwZpz2ajCEwO",
+ "isInheritable": false,
+ "position": 90
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "GPERMystNGTB",
+ "isInheritable": false,
+ "position": 100
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "6f9hih2hXXZk",
+ "isInheritable": false,
+ "position": 110
+ },
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "task-manager",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "format": "markdown",
+ "dataFileName": "Task Manager.md",
+ "attachments": []
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "J5Ex1ZrMbyJ6",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "J5Ex1ZrMbyJ6"
+ ],
+ "title": "Custom Request Handler",
+ "notePosition": 80,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/markdown",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "zEY4DaJG4YT5",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "CdNpE2pqjmI6",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "6f9hih2hXXZk",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "GLks18SNjxmC",
+ "isInheritable": false,
+ "position": 40
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "d3fAXQ2diepH",
+ "isInheritable": false,
+ "position": 50
+ },
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "custom-request-handler",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "format": "markdown",
+ "dataFileName": "Custom Request Handler.md",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "d3fAXQ2diepH",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "d3fAXQ2diepH"
+ ],
+ "title": "Custom Resource Providers",
+ "notePosition": 90,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [],
+ "format": "markdown",
+ "dataFileName": "Custom Resource Providers.md",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "pgxEVkzLl1OP",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "pgxEVkzLl1OP"
+ ],
+ "title": "ETAPI (REST API)",
+ "notePosition": 100,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/markdown",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "etapi",
+ "isInheritable": false,
+ "position": 10
+ }
+ ],
+ "format": "markdown",
+ "dataFileName": "ETAPI (REST API).md",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "47ZrP6FNuoG8",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "47ZrP6FNuoG8"
+ ],
+ "title": "Default Note Title",
+ "notePosition": 110,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/markdown",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "zEY4DaJG4YT5",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "KC1HB96bqqHX",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "default-note-title",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "format": "markdown",
+ "dataFileName": "Default Note Title.md",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "wX4HbRucYSDD",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "wX4HbRucYSDD"
+ ],
+ "title": "Database",
+ "notePosition": 130,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/markdown",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "tAassRL4RSQL",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "iRwzGnHPzonm",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "l0tKav7yLHGF",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "R7abl2fc6Mxi",
+ "isInheritable": false,
+ "position": 40
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "xYjQUYhpbUEW",
+ "isInheritable": false,
+ "position": 50
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "Wy267RK4M69c",
+ "isInheritable": false,
+ "position": 60
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "oyIAJ9PvvwHX",
+ "isInheritable": false,
+ "position": 70
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "Gzjqa934BdH4",
+ "isInheritable": false,
+ "position": 80
+ },
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "database",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-data",
+ "isInheritable": false,
+ "position": 50
+ }
+ ],
+ "format": "markdown",
+ "dataFileName": "Database.md",
+ "attachments": [],
+ "dirFileName": "Database",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "oyIAJ9PvvwHX",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "wX4HbRucYSDD",
+ "oyIAJ9PvvwHX"
+ ],
+ "title": "Manually altering the database",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "YKWqdJhzi2VY",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "tAassRL4RSQL",
+ "isInheritable": false,
+ "position": 20
+ }
+ ],
+ "format": "markdown",
+ "dataFileName": "Manually altering the database.md",
+ "attachments": [
+ {
+ "attachmentId": "0740ph4lJ4rv",
+ "title": "image.png",
+ "role": "image",
+ "mime": "image/jpg",
+ "position": 10,
+ "dataFileName": "Manually altering the data.png"
+ }
+ ],
+ "dirFileName": "Manually altering the database",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "YKWqdJhzi2VY",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "wX4HbRucYSDD",
+ "oyIAJ9PvvwHX",
+ "YKWqdJhzi2VY"
+ ],
+ "title": "SQL Console",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "l0tKav7yLHGF",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "Vc8PjrjAGuOp",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-data",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "format": "markdown",
+ "dataFileName": "SQL Console.md",
+ "attachments": [
+ {
+ "attachmentId": "1YS10Qg7S4YR",
+ "title": "image.png",
+ "role": "image",
+ "mime": "image/jpg",
+ "position": 10,
+ "dataFileName": "SQL Console_image.png"
+ },
+ {
+ "attachmentId": "827EgLgWhZWF",
+ "title": "image.png",
+ "role": "image",
+ "mime": "image/jpg",
+ "position": 10,
+ "dataFileName": "1_SQL Console_image.png"
+ },
+ {
+ "attachmentId": "gIbK7NNLu3iZ",
+ "title": "image.png",
+ "role": "image",
+ "mime": "image/png",
+ "position": 10,
+ "dataFileName": "2_SQL Console_image.png"
+ },
+ {
+ "attachmentId": "pP87PB9ELjQn",
+ "title": "image.png",
+ "role": "image",
+ "mime": "image/png",
+ "position": 10,
+ "dataFileName": "3_SQL Console_image.png"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "Gzjqa934BdH4",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "Gzjqa934BdH4"
+ ],
+ "title": "Configuration (config.ini or environment variables)",
+ "notePosition": 140,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/markdown",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "configuration",
+ "isInheritable": false,
+ "position": 10
+ }
+ ],
+ "format": "markdown",
+ "dataFileName": "Configuration (config.ini or e.md",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "ivYnonVFBxbQ",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "ivYnonVFBxbQ"
+ ],
+ "title": "Bulk actions",
+ "notePosition": 150,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [],
+ "format": "markdown",
+ "dataFileName": "Bulk actions.md",
+ "attachments": []
+ }
+ ]
+ },
{
"isClone": false,
"noteId": "Otzi9La2YAUX",
@@ -3903,7 +5286,7 @@
"dataFileName": "4_Calendar View_image.png"
},
{
- "attachmentId": "GeEGbbeQ1qy9",
+ "attachmentId": "HfBu0m3WXtn2",
"title": "image.png",
"role": "image",
"mime": "image/png",
@@ -3911,7 +5294,7 @@
"dataFileName": "5_Calendar View_image.png"
},
{
- "attachmentId": "gQvwJGB5a4c1",
+ "attachmentId": "ho00OJTNrxVI",
"title": "image.png",
"role": "image",
"mime": "image/png",
@@ -3919,7 +5302,7 @@
"dataFileName": "6_Calendar View_image.png"
},
{
- "attachmentId": "HfBu0m3WXtn2",
+ "attachmentId": "irfNX8n4159U",
"title": "image.png",
"role": "image",
"mime": "image/png",
@@ -3927,7 +5310,7 @@
"dataFileName": "7_Calendar View_image.png"
},
{
- "attachmentId": "ho00OJTNrxVI",
+ "attachmentId": "KF56rdNuOwWd",
"title": "image.png",
"role": "image",
"mime": "image/png",
@@ -3935,7 +5318,7 @@
"dataFileName": "8_Calendar View_image.png"
},
{
- "attachmentId": "irfNX8n4159U",
+ "attachmentId": "oBWr5GL6cUAZ",
"title": "image.png",
"role": "image",
"mime": "image/png",
@@ -3943,44 +5326,20 @@
"dataFileName": "9_Calendar View_image.png"
},
{
- "attachmentId": "KF56rdNuOwWd",
+ "attachmentId": "oS6yUoQtfhpg",
"title": "image.png",
"role": "image",
"mime": "image/png",
"position": 10,
"dataFileName": "10_Calendar View_image.png"
},
- {
- "attachmentId": "oBWr5GL6cUAZ",
- "title": "image.png",
- "role": "image",
- "mime": "image/png",
- "position": 10,
- "dataFileName": "11_Calendar View_image.png"
- },
- {
- "attachmentId": "oS6yUoQtfhpg",
- "title": "image.png",
- "role": "image",
- "mime": "image/png",
- "position": 10,
- "dataFileName": "12_Calendar View_image.png"
- },
- {
- "attachmentId": "PYHfGSBQpr0y",
- "title": "image.png",
- "role": "image",
- "mime": "image/png",
- "position": 10,
- "dataFileName": "13_Calendar View_image.png"
- },
{
"attachmentId": "u2c09UpZghff",
"title": "image.png",
"role": "image",
"mime": "image/png",
"position": 10,
- "dataFileName": "14_Calendar View_image.png"
+ "dataFileName": "11_Calendar View_image.png"
}
]
}
@@ -4357,1389 +5716,6 @@
}
]
},
- {
- "isClone": false,
- "noteId": "tC7s2alapj8V",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V"
- ],
- "title": "Advanced Usage",
- "notePosition": 110,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/html",
- "attributes": [
- {
- "type": "label",
- "name": "iconClass",
- "value": "bx bx-rocket",
- "isInheritable": false,
- "position": 10
- }
- ],
- "format": "markdown",
- "attachments": [],
- "dirFileName": "Advanced Usage",
- "children": [
- {
- "isClone": false,
- "noteId": "zEY4DaJG4YT5",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V",
- "zEY4DaJG4YT5"
- ],
- "title": "Attributes",
- "notePosition": 10,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/markdown",
- "attributes": [
- {
- "type": "relation",
- "name": "internalLink",
- "value": "R7abl2fc6Mxi",
- "isInheritable": false,
- "position": 10
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "l0tKav7yLHGF",
- "isInheritable": false,
- "position": 20
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "p9kXRFAkwN4o",
- "isInheritable": false,
- "position": 30
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "J5Ex1ZrMbyJ6",
- "isInheritable": false,
- "position": 40
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "9sRHySam5fXb",
- "isInheritable": false,
- "position": 50
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "u3YFHC9tQlpm",
- "isInheritable": false,
- "position": 60
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "R9pX4DGra2Vt",
- "isInheritable": false,
- "position": 70
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "47ZrP6FNuoG8",
- "isInheritable": false,
- "position": 80
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "OFXdgB2nNk1F",
- "isInheritable": false,
- "position": 90
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "bwZpz2ajCEwO",
- "isInheritable": false,
- "position": 100
- },
- {
- "type": "label",
- "name": "shareAlias",
- "value": "attributes",
- "isInheritable": false,
- "position": 30
- }
- ],
- "format": "markdown",
- "dataFileName": "Attributes.md",
- "attachments": [
- {
- "attachmentId": "P4eRVtGFoHh2",
- "title": "image.png",
- "role": "image",
- "mime": "image/jpg",
- "position": 10,
- "dataFileName": "Attributes_image.png"
- }
- ],
- "dirFileName": "Attributes",
- "children": [
- {
- "isClone": false,
- "noteId": "bwZpz2ajCEwO",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V",
- "zEY4DaJG4YT5",
- "bwZpz2ajCEwO"
- ],
- "title": "Attribute Inheritance",
- "notePosition": 10,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/markdown",
- "attributes": [
- {
- "type": "relation",
- "name": "internalLink",
- "value": "KC1HB96bqqHX",
- "isInheritable": false,
- "position": 10
- },
- {
- "type": "label",
- "name": "shareAlias",
- "value": "attribute-inheritance",
- "isInheritable": false,
- "position": 20
- }
- ],
- "format": "markdown",
- "dataFileName": "Attribute Inheritance.md",
- "attachments": []
- },
- {
- "isClone": false,
- "noteId": "OFXdgB2nNk1F",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V",
- "zEY4DaJG4YT5",
- "OFXdgB2nNk1F"
- ],
- "title": "Promoted Attributes",
- "notePosition": 20,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/markdown",
- "attributes": [
- {
- "type": "relation",
- "name": "internalLink",
- "value": "zEY4DaJG4YT5",
- "isInheritable": false,
- "position": 10
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "bwZpz2ajCEwO",
- "isInheritable": false,
- "position": 20
- },
- {
- "type": "relation",
- "name": "imageLink",
- "value": "rxH2Dm1jn6YT",
- "isInheritable": false,
- "position": 30
- },
- {
- "type": "label",
- "name": "shareAlias",
- "value": "promoted-attributes",
- "isInheritable": false,
- "position": 20
- }
- ],
- "format": "markdown",
- "dataFileName": "Promoted Attributes.md",
- "attachments": [
- {
- "attachmentId": "4EcBRWF9iCk2",
- "title": "image.png",
- "role": "image",
- "mime": "image/jpg",
- "position": 10,
- "dataFileName": "Promoted Attributes_image.png"
- }
- ]
- },
- {
- "isClone": false,
- "noteId": "KC1HB96bqqHX",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V",
- "zEY4DaJG4YT5",
- "KC1HB96bqqHX"
- ],
- "title": "Template",
- "notePosition": 30,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/markdown",
- "attributes": [
- {
- "type": "relation",
- "name": "internalLink",
- "value": "bwZpz2ajCEwO",
- "isInheritable": false,
- "position": 10
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "OFXdgB2nNk1F",
- "isInheritable": false,
- "position": 20
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "xYjQUYhpbUEW",
- "isInheritable": false,
- "position": 30
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "l0tKav7yLHGF",
- "isInheritable": false,
- "position": 40
- },
- {
- "type": "relation",
- "name": "imageLink",
- "value": "Y8kzZ5MSZLCC",
- "isInheritable": false,
- "position": 50
- },
- {
- "type": "relation",
- "name": "imageLink",
- "value": "uuGrYX41lWN0",
- "isInheritable": false,
- "position": 60
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "9sRHySam5fXb",
- "isInheritable": false,
- "position": 70
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "wX4HbRucYSDD",
- "isInheritable": false,
- "position": 80
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "iRwzGnHPzonm",
- "isInheritable": false,
- "position": 90
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "47ZrP6FNuoG8",
- "isInheritable": false,
- "position": 100
- },
- {
- "type": "label",
- "name": "shareAlias",
- "value": "template",
- "isInheritable": false,
- "position": 30
- }
- ],
- "format": "markdown",
- "dataFileName": "Template.md",
- "attachments": []
- }
- ]
- },
- {
- "isClone": false,
- "noteId": "iRwzGnHPzonm",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V",
- "iRwzGnHPzonm"
- ],
- "title": "Relation Map",
- "notePosition": 20,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/markdown",
- "attributes": [
- {
- "type": "relation",
- "name": "internalLink",
- "value": "zEY4DaJG4YT5",
- "isInheritable": false,
- "position": 10
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "OFXdgB2nNk1F",
- "isInheritable": false,
- "position": 20
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "wX4HbRucYSDD",
- "isInheritable": false,
- "position": 30
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "BCkXAVs63Ttv",
- "isInheritable": false,
- "position": 40
- },
- {
- "type": "relation",
- "name": "imageLink",
- "value": "EH6qNioOHeyT",
- "isInheritable": false,
- "position": 50
- },
- {
- "type": "relation",
- "name": "imageLink",
- "value": "xeZPrfi77XPu",
- "isInheritable": false,
- "position": 60
- },
- {
- "type": "relation",
- "name": "imageLink",
- "value": "N98UhifxrVpZ",
- "isInheritable": false,
- "position": 70
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "kBrnXNG3Hplm",
- "isInheritable": false,
- "position": 80
- },
- {
- "type": "label",
- "name": "shareAlias",
- "value": "relation-map",
- "isInheritable": false,
- "position": 30
- }
- ],
- "format": "markdown",
- "dataFileName": "Relation Map.md",
- "attachments": [
- {
- "attachmentId": "x92CIQzusTuc",
- "title": "relation-map-dev-process-demo.gif",
- "role": "image",
- "mime": "image/gif",
- "position": 10,
- "dataFileName": "Relation Map_relation-map-.gif"
- }
- ]
- },
- {
- "isClone": false,
- "noteId": "BCkXAVs63Ttv",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V",
- "BCkXAVs63Ttv"
- ],
- "title": "Note Map",
- "notePosition": 30,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/markdown",
- "attributes": [
- {
- "type": "relation",
- "name": "internalLink",
- "value": "zEY4DaJG4YT5",
- "isInheritable": false,
- "position": 10
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "iRwzGnHPzonm",
- "isInheritable": false,
- "position": 20
- },
- {
- "type": "label",
- "name": "shareAlias",
- "value": "note-map",
- "isInheritable": false,
- "position": 30
- }
- ],
- "format": "markdown",
- "dataFileName": "Note Map.md",
- "attachments": [
- {
- "attachmentId": "F48iB3BbITHb",
- "title": "image.png",
- "role": "image",
- "mime": "image/jpg",
- "position": 10,
- "dataFileName": "Note Map_image.png"
- },
- {
- "attachmentId": "scmGuoLQPj8C",
- "title": "image.png",
- "role": "image",
- "mime": "image/jpg",
- "position": 10,
- "dataFileName": "1_Note Map_image.png"
- }
- ]
- },
- {
- "isClone": false,
- "noteId": "R9pX4DGra2Vt",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V",
- "R9pX4DGra2Vt"
- ],
- "title": "Sharing",
- "notePosition": 50,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/markdown",
- "attributes": [
- {
- "type": "relation",
- "name": "imageLink",
- "value": "5GcxcE9fP9xX",
- "isInheritable": false,
- "position": 10
- },
- {
- "type": "relation",
- "name": "imageLink",
- "value": "Ky3qOJJMZ731",
- "isInheritable": false,
- "position": 20
- },
- {
- "type": "relation",
- "name": "imageLink",
- "value": "lCtZz2Z59wPT",
- "isInheritable": false,
- "position": 30
- },
- {
- "type": "relation",
- "name": "imageLink",
- "value": "jEQNvpyaXIWE",
- "isInheritable": false,
- "position": 40
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "WOcw2SLH6tbX",
- "isInheritable": false,
- "position": 50
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "bwZpz2ajCEwO",
- "isInheritable": false,
- "position": 60
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "6f9hih2hXXZk",
- "isInheritable": false,
- "position": 70
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "Wy267RK4M69c",
- "isInheritable": false,
- "position": 80
- },
- {
- "type": "label",
- "name": "shareAlias",
- "value": "sharing",
- "isInheritable": false,
- "position": 10
- },
- {
- "type": "label",
- "name": "iconClass",
- "value": "bx bx-share-alt",
- "isInheritable": false,
- "position": 30
- }
- ],
- "format": "markdown",
- "dataFileName": "Sharing.md",
- "attachments": [],
- "dirFileName": "Sharing",
- "children": [
- {
- "isClone": false,
- "noteId": "Qjt68inQ2bRj",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V",
- "R9pX4DGra2Vt",
- "Qjt68inQ2bRj"
- ],
- "title": "Serving directly the content of a note",
- "notePosition": 10,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/html",
- "attributes": [],
- "format": "markdown",
- "dataFileName": "Serving directly the content o.md",
- "attachments": [
- {
- "attachmentId": "eizmhhmocL6L",
- "title": "image.png",
- "role": "image",
- "mime": "image/jpg",
- "position": 10,
- "dataFileName": "Serving directly the conte.png"
- },
- {
- "attachmentId": "xicVjsf2Kmaz",
- "title": "image.png",
- "role": "image",
- "mime": "image/jpg",
- "position": 10,
- "dataFileName": "1_Serving directly the conte.png"
- }
- ]
- }
- ]
- },
- {
- "isClone": false,
- "noteId": "5668rwcirq1t",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V",
- "5668rwcirq1t"
- ],
- "title": "Advanced Showcases",
- "notePosition": 70,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/markdown",
- "attributes": [
- {
- "type": "relation",
- "name": "internalLink",
- "value": "CdNpE2pqjmI6",
- "isInheritable": false,
- "position": 10
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "OFXdgB2nNk1F",
- "isInheritable": false,
- "position": 20
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "wX4HbRucYSDD",
- "isInheritable": false,
- "position": 30
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "iRwzGnHPzonm",
- "isInheritable": false,
- "position": 40
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "l0tKav7yLHGF",
- "isInheritable": false,
- "position": 50
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "R7abl2fc6Mxi",
- "isInheritable": false,
- "position": 60
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "xYjQUYhpbUEW",
- "isInheritable": false,
- "position": 70
- },
- {
- "type": "label",
- "name": "shareAlias",
- "value": "advanced-showcases",
- "isInheritable": false,
- "position": 10
- }
- ],
- "format": "markdown",
- "dataFileName": "Advanced Showcases.md",
- "attachments": [],
- "dirFileName": "Advanced Showcases",
- "children": [
- {
- "isClone": false,
- "noteId": "l0tKav7yLHGF",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V",
- "5668rwcirq1t",
- "l0tKav7yLHGF"
- ],
- "title": "Day Notes",
- "notePosition": 10,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/markdown",
- "attributes": [
- {
- "type": "relation",
- "name": "internalLink",
- "value": "IakOLONlIfGI",
- "isInheritable": false,
- "position": 10
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "xYjQUYhpbUEW",
- "isInheritable": false,
- "position": 20
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "OFXdgB2nNk1F",
- "isInheritable": false,
- "position": 30
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "R7abl2fc6Mxi",
- "isInheritable": false,
- "position": 40
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "KC1HB96bqqHX",
- "isInheritable": false,
- "position": 50
- },
- {
- "type": "label",
- "name": "shareAlias",
- "value": "day-notes",
- "isInheritable": false,
- "position": 10
- },
- {
- "type": "label",
- "name": "iconClass",
- "value": "bx bx-calendar",
- "isInheritable": false,
- "position": 40
- }
- ],
- "format": "markdown",
- "dataFileName": "Day Notes.md",
- "attachments": [
- {
- "attachmentId": "9wmaElfXYjWM",
- "title": "image.png",
- "role": "image",
- "mime": "image/png",
- "position": 10,
- "dataFileName": "Day Notes_image.png"
- },
- {
- "attachmentId": "FL40jUEj7xLt",
- "title": "image.png",
- "role": "image",
- "mime": "image/jpg",
- "position": 10,
- "dataFileName": "1_Day Notes_image.png"
- }
- ]
- },
- {
- "isClone": false,
- "noteId": "R7abl2fc6Mxi",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V",
- "5668rwcirq1t",
- "R7abl2fc6Mxi"
- ],
- "title": "Weight Tracker",
- "notePosition": 20,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/markdown",
- "attributes": [
- {
- "type": "relation",
- "name": "internalLink",
- "value": "l0tKav7yLHGF",
- "isInheritable": false,
- "position": 10
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "GLks18SNjxmC",
- "isInheritable": false,
- "position": 20
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "wX4HbRucYSDD",
- "isInheritable": false,
- "position": 30
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "OFXdgB2nNk1F",
- "isInheritable": false,
- "position": 40
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "KC1HB96bqqHX",
- "isInheritable": false,
- "position": 50
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "CdNpE2pqjmI6",
- "isInheritable": false,
- "position": 60
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "zEY4DaJG4YT5",
- "isInheritable": false,
- "position": 70
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "6f9hih2hXXZk",
- "isInheritable": false,
- "position": 80
- },
- {
- "type": "label",
- "name": "shareAlias",
- "value": "weight-tracker",
- "isInheritable": false,
- "position": 20
- }
- ],
- "format": "markdown",
- "dataFileName": "Weight Tracker.md",
- "attachments": [
- {
- "attachmentId": "Ah5QpwUUEGf8",
- "title": "image.png",
- "role": "image",
- "mime": "image/jpg",
- "position": 10,
- "dataFileName": "Weight Tracker_image.png"
- }
- ]
- },
- {
- "isClone": false,
- "noteId": "xYjQUYhpbUEW",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V",
- "5668rwcirq1t",
- "xYjQUYhpbUEW"
- ],
- "title": "Task Manager",
- "notePosition": 30,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/markdown",
- "attributes": [
- {
- "type": "relation",
- "name": "internalLink",
- "value": "l0tKav7yLHGF",
- "isInheritable": false,
- "position": 10
- },
- {
- "type": "relation",
- "name": "imageLink",
- "value": "92KeXdKh3Ca1",
- "isInheritable": false,
- "position": 20
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "OFXdgB2nNk1F",
- "isInheritable": false,
- "position": 30
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "CdNpE2pqjmI6",
- "isInheritable": false,
- "position": 40
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "wX4HbRucYSDD",
- "isInheritable": false,
- "position": 50
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "IakOLONlIfGI",
- "isInheritable": false,
- "position": 60
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "kBrnXNG3Hplm",
- "isInheritable": false,
- "position": 70
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "zEY4DaJG4YT5",
- "isInheritable": false,
- "position": 80
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "bwZpz2ajCEwO",
- "isInheritable": false,
- "position": 90
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "GPERMystNGTB",
- "isInheritable": false,
- "position": 100
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "6f9hih2hXXZk",
- "isInheritable": false,
- "position": 110
- },
- {
- "type": "label",
- "name": "shareAlias",
- "value": "task-manager",
- "isInheritable": false,
- "position": 30
- }
- ],
- "format": "markdown",
- "dataFileName": "Task Manager.md",
- "attachments": []
- }
- ]
- },
- {
- "isClone": false,
- "noteId": "J5Ex1ZrMbyJ6",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V",
- "J5Ex1ZrMbyJ6"
- ],
- "title": "Custom Request Handler",
- "notePosition": 80,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/markdown",
- "attributes": [
- {
- "type": "relation",
- "name": "internalLink",
- "value": "zEY4DaJG4YT5",
- "isInheritable": false,
- "position": 10
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "CdNpE2pqjmI6",
- "isInheritable": false,
- "position": 20
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "6f9hih2hXXZk",
- "isInheritable": false,
- "position": 30
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "GLks18SNjxmC",
- "isInheritable": false,
- "position": 40
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "d3fAXQ2diepH",
- "isInheritable": false,
- "position": 50
- },
- {
- "type": "label",
- "name": "shareAlias",
- "value": "custom-request-handler",
- "isInheritable": false,
- "position": 30
- }
- ],
- "format": "markdown",
- "dataFileName": "Custom Request Handler.md",
- "attachments": []
- },
- {
- "isClone": false,
- "noteId": "d3fAXQ2diepH",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V",
- "d3fAXQ2diepH"
- ],
- "title": "Custom Resource Providers",
- "notePosition": 90,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/html",
- "attributes": [],
- "format": "markdown",
- "dataFileName": "Custom Resource Providers.md",
- "attachments": []
- },
- {
- "isClone": false,
- "noteId": "pgxEVkzLl1OP",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V",
- "pgxEVkzLl1OP"
- ],
- "title": "ETAPI (REST API)",
- "notePosition": 100,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/markdown",
- "attributes": [
- {
- "type": "label",
- "name": "shareAlias",
- "value": "etapi",
- "isInheritable": false,
- "position": 10
- }
- ],
- "format": "markdown",
- "dataFileName": "ETAPI (REST API).md",
- "attachments": []
- },
- {
- "isClone": false,
- "noteId": "47ZrP6FNuoG8",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V",
- "47ZrP6FNuoG8"
- ],
- "title": "Default Note Title",
- "notePosition": 110,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/markdown",
- "attributes": [
- {
- "type": "relation",
- "name": "internalLink",
- "value": "zEY4DaJG4YT5",
- "isInheritable": false,
- "position": 10
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "KC1HB96bqqHX",
- "isInheritable": false,
- "position": 20
- },
- {
- "type": "label",
- "name": "shareAlias",
- "value": "default-note-title",
- "isInheritable": false,
- "position": 30
- }
- ],
- "format": "markdown",
- "dataFileName": "Default Note Title.md",
- "attachments": []
- },
- {
- "isClone": false,
- "noteId": "wX4HbRucYSDD",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V",
- "wX4HbRucYSDD"
- ],
- "title": "Database",
- "notePosition": 130,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/markdown",
- "attributes": [
- {
- "type": "relation",
- "name": "internalLink",
- "value": "tAassRL4RSQL",
- "isInheritable": false,
- "position": 10
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "iRwzGnHPzonm",
- "isInheritable": false,
- "position": 20
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "l0tKav7yLHGF",
- "isInheritable": false,
- "position": 30
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "R7abl2fc6Mxi",
- "isInheritable": false,
- "position": 40
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "xYjQUYhpbUEW",
- "isInheritable": false,
- "position": 50
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "Wy267RK4M69c",
- "isInheritable": false,
- "position": 60
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "oyIAJ9PvvwHX",
- "isInheritable": false,
- "position": 70
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "Gzjqa934BdH4",
- "isInheritable": false,
- "position": 80
- },
- {
- "type": "label",
- "name": "shareAlias",
- "value": "database",
- "isInheritable": false,
- "position": 30
- },
- {
- "type": "label",
- "name": "iconClass",
- "value": "bx bx-data",
- "isInheritable": false,
- "position": 50
- }
- ],
- "format": "markdown",
- "dataFileName": "Database.md",
- "attachments": [],
- "dirFileName": "Database",
- "children": [
- {
- "isClone": false,
- "noteId": "oyIAJ9PvvwHX",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V",
- "wX4HbRucYSDD",
- "oyIAJ9PvvwHX"
- ],
- "title": "Manually altering the database",
- "notePosition": 10,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/html",
- "attributes": [
- {
- "type": "relation",
- "name": "internalLink",
- "value": "YKWqdJhzi2VY",
- "isInheritable": false,
- "position": 10
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "tAassRL4RSQL",
- "isInheritable": false,
- "position": 20
- }
- ],
- "format": "markdown",
- "dataFileName": "Manually altering the database.md",
- "attachments": [
- {
- "attachmentId": "0740ph4lJ4rv",
- "title": "image.png",
- "role": "image",
- "mime": "image/jpg",
- "position": 10,
- "dataFileName": "Manually altering the data.png"
- }
- ],
- "dirFileName": "Manually altering the database",
- "children": [
- {
- "isClone": false,
- "noteId": "YKWqdJhzi2VY",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V",
- "wX4HbRucYSDD",
- "oyIAJ9PvvwHX",
- "YKWqdJhzi2VY"
- ],
- "title": "SQL Console",
- "notePosition": 10,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/html",
- "attributes": [
- {
- "type": "relation",
- "name": "internalLink",
- "value": "l0tKav7yLHGF",
- "isInheritable": false,
- "position": 10
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "Vc8PjrjAGuOp",
- "isInheritable": false,
- "position": 20
- },
- {
- "type": "label",
- "name": "iconClass",
- "value": "bx bx-data",
- "isInheritable": false,
- "position": 30
- }
- ],
- "format": "markdown",
- "dataFileName": "SQL Console.md",
- "attachments": [
- {
- "attachmentId": "1YS10Qg7S4YR",
- "title": "image.png",
- "role": "image",
- "mime": "image/jpg",
- "position": 10,
- "dataFileName": "SQL Console_image.png"
- },
- {
- "attachmentId": "827EgLgWhZWF",
- "title": "image.png",
- "role": "image",
- "mime": "image/jpg",
- "position": 10,
- "dataFileName": "1_SQL Console_image.png"
- },
- {
- "attachmentId": "gIbK7NNLu3iZ",
- "title": "image.png",
- "role": "image",
- "mime": "image/png",
- "position": 10,
- "dataFileName": "2_SQL Console_image.png"
- },
- {
- "attachmentId": "pP87PB9ELjQn",
- "title": "image.png",
- "role": "image",
- "mime": "image/png",
- "position": 10,
- "dataFileName": "3_SQL Console_image.png"
- }
- ]
- }
- ]
- }
- ]
- },
- {
- "isClone": false,
- "noteId": "Gzjqa934BdH4",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V",
- "Gzjqa934BdH4"
- ],
- "title": "Configuration (config.ini or environment variables)",
- "notePosition": 140,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/markdown",
- "attributes": [
- {
- "type": "label",
- "name": "shareAlias",
- "value": "configuration",
- "isInheritable": false,
- "position": 10
- }
- ],
- "format": "markdown",
- "dataFileName": "Configuration (config.ini or e.md",
- "attachments": []
- },
- {
- "isClone": false,
- "noteId": "ivYnonVFBxbQ",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V",
- "ivYnonVFBxbQ"
- ],
- "title": "Bulk actions",
- "notePosition": 150,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/html",
- "attributes": [],
- "format": "markdown",
- "dataFileName": "Bulk actions.md",
- "attachments": []
- }
- ]
- },
{
"isClone": false,
"noteId": "pKK96zzmvBGf",
diff --git a/docs/User Guide/User Guide/Note Types/Book/10_Calendar View_image.png b/docs/User Guide/User Guide/Note Types/Book/10_Calendar View_image.png
index 23a383270..e050184a7 100644
Binary files a/docs/User Guide/User Guide/Note Types/Book/10_Calendar View_image.png and b/docs/User Guide/User Guide/Note Types/Book/10_Calendar View_image.png differ
diff --git a/docs/User Guide/User Guide/Note Types/Book/11_Calendar View_image.png b/docs/User Guide/User Guide/Note Types/Book/11_Calendar View_image.png
index 2dea53b64..53ac5632f 100644
Binary files a/docs/User Guide/User Guide/Note Types/Book/11_Calendar View_image.png and b/docs/User Guide/User Guide/Note Types/Book/11_Calendar View_image.png differ
diff --git a/docs/User Guide/User Guide/Note Types/Book/12_Calendar View_image.png b/docs/User Guide/User Guide/Note Types/Book/12_Calendar View_image.png
deleted file mode 100644
index e050184a7..000000000
Binary files a/docs/User Guide/User Guide/Note Types/Book/12_Calendar View_image.png and /dev/null differ
diff --git a/docs/User Guide/User Guide/Note Types/Book/13_Calendar View_image.png b/docs/User Guide/User Guide/Note Types/Book/13_Calendar View_image.png
deleted file mode 100644
index 46698faac..000000000
Binary files a/docs/User Guide/User Guide/Note Types/Book/13_Calendar View_image.png and /dev/null differ
diff --git a/docs/User Guide/User Guide/Note Types/Book/14_Calendar View_image.png b/docs/User Guide/User Guide/Note Types/Book/14_Calendar View_image.png
deleted file mode 100644
index 53ac5632f..000000000
Binary files a/docs/User Guide/User Guide/Note Types/Book/14_Calendar View_image.png and /dev/null differ
diff --git a/docs/User Guide/User Guide/Note Types/Book/5_Calendar View_image.png b/docs/User Guide/User Guide/Note Types/Book/5_Calendar View_image.png
index f60aa0acc..7e97245a6 100644
Binary files a/docs/User Guide/User Guide/Note Types/Book/5_Calendar View_image.png and b/docs/User Guide/User Guide/Note Types/Book/5_Calendar View_image.png differ
diff --git a/docs/User Guide/User Guide/Note Types/Book/6_Calendar View_image.png b/docs/User Guide/User Guide/Note Types/Book/6_Calendar View_image.png
index 71f7d2dc3..d588ed568 100644
Binary files a/docs/User Guide/User Guide/Note Types/Book/6_Calendar View_image.png and b/docs/User Guide/User Guide/Note Types/Book/6_Calendar View_image.png differ
diff --git a/docs/User Guide/User Guide/Note Types/Book/7_Calendar View_image.png b/docs/User Guide/User Guide/Note Types/Book/7_Calendar View_image.png
index 7e97245a6..acf382206 100644
Binary files a/docs/User Guide/User Guide/Note Types/Book/7_Calendar View_image.png and b/docs/User Guide/User Guide/Note Types/Book/7_Calendar View_image.png differ
diff --git a/docs/User Guide/User Guide/Note Types/Book/8_Calendar View_image.png b/docs/User Guide/User Guide/Note Types/Book/8_Calendar View_image.png
index d588ed568..23a383270 100644
Binary files a/docs/User Guide/User Guide/Note Types/Book/8_Calendar View_image.png and b/docs/User Guide/User Guide/Note Types/Book/8_Calendar View_image.png differ
diff --git a/docs/User Guide/User Guide/Note Types/Book/9_Calendar View_image.png b/docs/User Guide/User Guide/Note Types/Book/9_Calendar View_image.png
index acf382206..2dea53b64 100644
Binary files a/docs/User Guide/User Guide/Note Types/Book/9_Calendar View_image.png and b/docs/User Guide/User Guide/Note Types/Book/9_Calendar View_image.png differ
diff --git a/docs/User Guide/User Guide/Note Types/Book/Calendar View.md b/docs/User Guide/User Guide/Note Types/Book/Calendar View.md
index 3b072c1f3..77b6ad014 100644
--- a/docs/User Guide/User Guide/Note Types/Book/Calendar View.md
+++ b/docs/User Guide/User Guide/Note Types/Book/Calendar View.md
@@ -3,6 +3,13 @@
The Calendar view of Book notes will display each child note in a calendar that has a start date and optionally an end date, as an event.
+The Calendar view has multiple display modes:
+
+* Week view, where all the 7 days of the week (or 5 if the weekends are hidden) are displayed in columns. This mode allows entering and displaying time-specific events, not just all-day events.
+* Month view, where the entire month is displayed and all-day events can be inserted. Both time-specific events and all-day events are listed.
+* Year view, which displays the entire year for quick reference.
+* List view, which displays all the events of a given month in sequence.
+
Unlike other Book view types, the Calendar view also allows some kind of interaction, such as moving events around as well as creating new ones.
## Creating a calendar
@@ -23,7 +30,7 @@ Unlike other Book view types, the Calendar view also allows some kind of interac
## Interacting with events
* Hovering the mouse over an event will display information about the note.
- 
+ 
* Left clicking the event will go to that note. Middle clicking will open the note in a new tab and right click will offer more options including opening the note in a new split or window.
* Drag and drop an event on the calendar to move it to another day.
* The length of an event can be changed by placing the mouse to the right edge of the event and dragging the mouse around.
@@ -32,11 +39,7 @@ Unlike other Book view types, the Calendar view also allows some kind of interac
The following attributes can be added to the book type:
-| Name | Description |
-| --- | --- |
-| `#calendar:hideWeekends` | When present (regardless of value), it will hide Saturday and Sundays from the calendar. |
-| `#calendar:weekNumbers` | When present (regardless of value), it will show the number of the week on the calendar. |
-| `~child:template` | Defines the template for newly created notes in the calendar (via dragging or clicking). |
+
Name Description #calendar:hideWeekends
When present (regardless of value), it will hide Saturday and Sundays from the calendar. #calendar:weekNumbers
When present (regardless of value), it will show the number of the week on the calendar. #calendar:view
Which view to display in the calendar:
timeGridWeek
for the week view;dayGridMonth
for the month view;multiMonthYear
for the year view;listMonth
for the list view.Any other value will be dismissed and the default view (month) will be used instead.
The value of this label is automatically updated when changing the view using the UI buttons.
~child:template
Defines the template for newly created notes in the calendar (via dragging or clicking).
In addition, the first day of the week can be either Sunday or Monday and can be adjusted from the application settings.
@@ -48,17 +51,21 @@ For each note of the calendar, the following attributes can be used:
| --- | --- |
| `#startDate` | The date the event starts, which will display it in the calendar. The format is `YYYY-MM-DD` (year, month and day separated by a minus sign). |
| `#endDate` | Similar to `startDate`, mentions the end date if the event spans across multiple days. The date is inclusive, so the end day is also considered. The attribute can be missing for single-day events. |
+| `#startTime` | The time the event starts at. If this value is missing, then the event is considered a full-day event. The format is `HH:MM` (hours in 24-hour format and minutes). |
+| `#endTime` | Similar to `startTime`, it mentions the time at which the event ends (in relation with `endDate` if present, or `startDate`). |
| `#color` | Displays the event with a specified color (named such as `red`, `gray` or hex such as `#FF0000`). This will also change the color of the note in other places such as the note tree. |
| `#calendar:color` | Similar to `#color`, but applies the color only for the event in the calendar and not for other places such as the note tree. |
| `#iconClass` | If present, the icon of the note will be displayed to the left of the event title. |
-| `#calendar:title` | Changes the title of an event to point to an attribute of the note other than the title, either a label (e.g. `#assignee`) or a relation (e.g. `~for`). See _Advanced use-cases_ for more information. |
-| `#calendar:displayedAttributes` | Allows displaying the value of one or more attributes in the calendar like this:  ` #weight="70" #Mood="Good" #calendar:displayedAttributes="weight,Mood" ` It can also be used with relations, case in which it will display the title of the target note: ` ~assignee=@My assignee #calendar:displayedAttributes="assignee" ` |
+| `#calendar:title` | Changes the title of an event to point to an attribute of the note other than the title, can either a label or a relation (without the `#` or `~` symbol). See _Use-cases_ for more information. |
+| `#calendar:displayedAttributes` | Allows displaying the value of one or more attributes in the calendar like this:  `#weight="70" #Mood="Good" #calendar:displayedAttributes="weight,Mood"` It can also be used with relations, case in which it will display the title of the target note: `~assignee=@My assignee #calendar:displayedAttributes="assignee"` |
| `#calendar:startDate` | Allows using a different label to represent the start date, other than `startDate` (e.g. `expiryDate`). The label name **must not be** prefixed with `#`. If the label is not defined for a note, the default will be used instead. |
-| `#calendar:endDate` | Allows using a different label to represent the start date, other than `endDate`. The label name **must not be** prefixed with `#`. If the label is not defined for a note, the default will be used instead. |
+| `#calendar:endDate` | Similar to `#calendar:startDate`, allows changing the attribute which is being used to read the end date. |
+| `#calendar:startTime` | Similar to `#calendar:startDate`, allows changing the attribute which is being used to read the start time. |
+| `#calendar:endTime` | Similar to `#calendar:startDate`, allows changing the attribute which is being used to read the end time. |
## How the calendar works
-
+
The calendar displays all the child notes of the book that have a `#startDate`. An `#endDate` can optionally be added.
@@ -72,7 +79,7 @@ If editing the start date and end date from the note itself is desirable, the fo
This will result in:
-
+
When not used in a Journal, the calendar is recursive. That is, it will look for events not just in its child notes but also in the children of these child notes.
@@ -89,30 +96,28 @@ Based on the `#calendarRoot` (or `#workspaceCalendarRoot`) attribute, the calend
* Clicking on the empty space on a date will automatically open that day's note or create it if it does not exist.
* Direct children of a day note will be displayed on the calendar despite not having a `dateNote` attribute. Children of the child notes will not be displayed.
-
+
### Using a different attribute as event title
By default, events are displayed on the calendar by their note title. However, it is possible to configure a different attribute to be displayed instead.
-To do so, assign `#calendar:title` to the child note (not the calendar/book note), with the value being `#name` where `name` can be any label. The attribute can also come through inheritance such as a template attribute. If the note does not have the requested label, the title of the note will be used instead.
+To do so, assign `#calendar:title` to the child note (not the calendar/book note), with the value being `name` where `name` can be any label (make not to add the `#` prefix). The attribute can also come through inheritance such as a template attribute. If the note does not have the requested label, the title of the note will be used instead.
-| | |
-| --- | --- |
-|  |  |
+ #startDate=2025-02-11 #endDate=2025-02-13 #name="My vacation" #calendar:title="name"
### Using a relation attribute as event title
-Similarly to using an attribute, use `#calendar:title` and set it to `~name` where `name` is the name of the relation to use.
+Similarly to using an attribute, use `#calendar:title` and set it to `name` where `name` is the name of the relation to use.
Moreover, if there are more relations of the same name, they will be displayed as multiple events coming from the same note.
| | |
| --- | --- |
-|  |  |
+| `#startDate=2025-02-14 #endDate=2025-02-15 ~for=@John Smith ~for=@Jane Doe #calendar:title="for"` |  |
Note that it's even possible to have a `#calendar:title` on the target note (e.g. “John Smith”) which will try to render an attribute of it. Note that it's not possible to use a relation here as well for safety reasons (an accidental recursion of attributes could cause the application to loop infinitely).
| | |
| --- | --- |
-|  |  |
\ No newline at end of file
+| `#calendar:title="shortName" #shortName="John S."` |  |
\ No newline at end of file
diff --git a/docs/User Guide/User Guide/Note Types/Text/Admonitions.md b/docs/User Guide/User Guide/Note Types/Text/Admonitions.md
index 86328305c..6c6463a02 100644
--- a/docs/User Guide/User Guide/Note Types/Text/Admonitions.md
+++ b/docs/User Guide/User Guide/Note Types/Text/Admonitions.md
@@ -46,7 +46,7 @@ These types were inspired by GitHub's support for this feature and there are cur
The Markdown syntax for admonitions as supported by Trilium is the one that GitHub uses, which is as follows:
-```markdown
+```
> [!NOTE]
> This is a note.
diff --git a/dump-db/package-lock.json b/dump-db/package-lock.json
index d46d004bb..793a7071a 100644
--- a/dump-db/package-lock.json
+++ b/dump-db/package-lock.json
@@ -493,9 +493,9 @@
"license": "MIT"
},
"node_modules/better-sqlite3": {
- "version": "11.9.0",
- "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-11.9.0.tgz",
- "integrity": "sha512-4b9xYnoaskj8eIkke9ZCB42p5bOPabptSku8Rl4Yww70Jf+aHeLvrIjXDJrKQxUEjdppsFb+fdJSjoH4TklROA==",
+ "version": "11.9.1",
+ "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-11.9.1.tgz",
+ "integrity": "sha512-Ba0KR+Fzxh2jDRhdg6TSH0SJGzb8C0aBY4hR8w8madIdIzzC6Y1+kx5qR6eS1Z+Gy20h6ZU28aeyg0z1VIrShQ==",
"hasInstallScript": true,
"dependencies": {
"bindings": "^1.5.0",
@@ -1416,9 +1416,9 @@
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
},
"better-sqlite3": {
- "version": "11.9.0",
- "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-11.9.0.tgz",
- "integrity": "sha512-4b9xYnoaskj8eIkke9ZCB42p5bOPabptSku8Rl4Yww70Jf+aHeLvrIjXDJrKQxUEjdppsFb+fdJSjoH4TklROA==",
+ "version": "11.9.1",
+ "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-11.9.1.tgz",
+ "integrity": "sha512-Ba0KR+Fzxh2jDRhdg6TSH0SJGzb8C0aBY4hR8w8madIdIzzC6Y1+kx5qR6eS1Z+Gy20h6ZU28aeyg0z1VIrShQ==",
"requires": {
"bindings": "^1.5.0",
"prebuild-install": "^7.1.1"
diff --git a/e2e/note_types/text.spec.ts b/e2e/note_types/text.spec.ts
index 71e2da2cc..328a43d17 100644
--- a/e2e/note_types/text.spec.ts
+++ b/e2e/note_types/text.spec.ts
@@ -61,8 +61,24 @@ test("Displays math popup", async ({ page, context }) => {
const mathForm = page.locator(".ck-math-form");
await expect(mathForm).toBeVisible();
- await mathForm.locator(".ck-input").first().fill("e=mc^2");
+ const input = mathForm.locator(".ck-input").first();
+ await input.click();
+ await input.fill("e=mc^2");
+ await page.waitForTimeout(100);
const preview = page.locator('[id^="math-preview"]');
+ await preview.waitFor({
+ state: 'visible',
+ timeout: 5000
+ });
+
+ await page.waitForFunction((): boolean => {
+ const preview = document.querySelector('[id^="math-preview"]');
+ if (!preview) return false;
+ const katex = preview.querySelector('.katex');
+ return !!katex && window.getComputedStyle(preview).display !== 'none';
+ }, { timeout: 5000 });
+
+ await expect(preview.locator('.katex')).toBeVisible();
await expect(preview).toMatchAriaSnapshot("- math: e = m c 2");
});
diff --git a/e2e/support/app.ts b/e2e/support/app.ts
index 64e60d74e..55f36a7ff 100644
--- a/e2e/support/app.ts
+++ b/e2e/support/app.ts
@@ -75,6 +75,8 @@ export default class App {
*/
async closeAllTabs() {
await this.triggerCommand("closeAllTabs");
+ // Page in Playwright is not updated somehow, need to click on the tab to make sure it's rendered
+ await this.getTab(0).click();
}
/**
diff --git a/libraries/ckeditor/ckeditor-content.css b/libraries/ckeditor/ckeditor-content.css
index 526d61f62..5f00bd7af 100644
--- a/libraries/ckeditor/ckeditor-content.css
+++ b/libraries/ckeditor/ckeditor-content.css
@@ -25,7 +25,6 @@
border-radius: 0.5em;
padding: 1em;
margin: 1.25em 0;
- margin-right: 14px;
position: relative;
overflow: hidden;
}
diff --git a/package-lock.json b/package-lock.json
index 79b89ac0b..126a73710 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,22 +1,18 @@
{
"name": "trilium",
- "version": "0.92.3-beta",
+ "version": "0.92.4",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "trilium",
- "version": "0.92.3-beta",
+ "version": "0.92.4",
"license": "AGPL-3.0-only",
"dependencies": {
"@braintree/sanitize-url": "7.1.1",
"@electron/remote": "2.1.2",
"@excalidraw/excalidraw": "0.18.0",
- "@fullcalendar/core": "6.1.15",
- "@fullcalendar/daygrid": "6.1.15",
- "@fullcalendar/interaction": "6.1.15",
"@highlightjs/cdn-assets": "11.11.1",
- "@joplin/turndown-plugin-gfm": "1.0.61",
"@mermaid-js/layout-elk": "0.1.7",
"@mind-elixir/node-menu": "1.0.4",
"@triliumnext/express-partial-content": "1.0.1",
@@ -24,7 +20,7 @@
"async-mutex": "0.5.0",
"autocomplete.js": "0.38.1",
"axios": "1.8.3",
- "better-sqlite3": "11.8.1",
+ "better-sqlite3": "11.9.1",
"boxicons": "2.1.4",
"chardet": "2.1.0",
"cheerio": "1.0.0",
@@ -50,7 +46,7 @@
"express-session": "1.18.1",
"force-graph": "1.49.4",
"fs-extra": "11.3.0",
- "helmet": "8.0.0",
+ "helmet": "8.1.0",
"html": "1.0.0",
"html2plaintext": "2.1.4",
"http-proxy-agent": "7.0.2",
@@ -116,7 +112,13 @@
"@electron-forge/plugin-auto-unpack-natives": "7.7.0",
"@electron/rebuild": "3.7.1",
"@eslint/js": "9.22.0",
- "@playwright/test": "1.51.0",
+ "@fullcalendar/core": "6.1.15",
+ "@fullcalendar/daygrid": "6.1.15",
+ "@fullcalendar/interaction": "6.1.15",
+ "@fullcalendar/list": "6.1.15",
+ "@fullcalendar/multimonth": "6.1.15",
+ "@fullcalendar/timegrid": "6.1.15",
+ "@playwright/test": "1.51.1",
"@popperjs/core": "2.11.8",
"@types/archiver": "6.0.3",
"@types/better-sqlite3": "7.6.12",
@@ -158,7 +160,7 @@
"@types/ws": "8.18.0",
"@types/xml2js": "0.4.14",
"@types/yargs": "17.0.33",
- "@vitest/coverage-v8": "3.0.8",
+ "@vitest/coverage-v8": "3.0.9",
"autoprefixer": "10.4.21",
"bootstrap": "5.3.3",
"cross-env": "7.0.3",
@@ -178,10 +180,11 @@
"prettier": "3.5.3",
"rcedit": "4.0.1",
"rimraf": "6.0.1",
- "sass": "1.85.1",
+ "sass": "1.86.0",
"sass-loader": "16.0.5",
"split.js": "1.6.5",
"supertest": "7.0.0",
+ "svg-pan-zoom": "3.6.2",
"swagger-jsdoc": "6.2.8",
"ts-loader": "9.5.2",
"tslib": "2.8.1",
@@ -189,7 +192,7 @@
"typedoc": "0.28.0",
"typescript": "5.8.2",
"typescript-eslint": "8.26.1",
- "vitest": "3.0.8",
+ "vitest": "3.0.9",
"webpack": "5.98.0",
"webpack-cli": "6.0.1",
"webpack-dev-middleware": "7.4.2"
@@ -2869,6 +2872,7 @@
"version": "6.1.15",
"resolved": "https://registry.npmjs.org/@fullcalendar/core/-/core-6.1.15.tgz",
"integrity": "sha512-BuX7o6ALpLb84cMw1FCB9/cSgF4JbVO894cjJZ6kP74jzbUZNjtwffwRdA+Id8rrLjT30d/7TrkW90k4zbXB5Q==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"preact": "~10.12.1"
@@ -2878,6 +2882,7 @@
"version": "10.12.1",
"resolved": "https://registry.npmjs.org/preact/-/preact-10.12.1.tgz",
"integrity": "sha512-l8386ixSsBdbreOAkqtrwqHwdvR35ID8c3rKPa8lCWuO86dBi32QWHV4vfsZK1utLLFMvw+Z5Ad4XLkZzchscg==",
+ "dev": true,
"license": "MIT",
"funding": {
"type": "opencollective",
@@ -2888,6 +2893,7 @@
"version": "6.1.15",
"resolved": "https://registry.npmjs.org/@fullcalendar/daygrid/-/daygrid-6.1.15.tgz",
"integrity": "sha512-j8tL0HhfiVsdtOCLfzK2J0RtSkiad3BYYemwQKq512cx6btz6ZZ2RNc/hVnIxluuWFyvx5sXZwoeTJsFSFTEFA==",
+ "dev": true,
"license": "MIT",
"peerDependencies": {
"@fullcalendar/core": "~6.1.15"
@@ -2897,11 +2903,48 @@
"version": "6.1.15",
"resolved": "https://registry.npmjs.org/@fullcalendar/interaction/-/interaction-6.1.15.tgz",
"integrity": "sha512-DOTSkofizM7QItjgu7W68TvKKvN9PSEEvDJceyMbQDvlXHa7pm/WAVtAc6xSDZ9xmB1QramYoWGLHkCYbTW1rQ==",
+ "dev": true,
"license": "MIT",
"peerDependencies": {
"@fullcalendar/core": "~6.1.15"
}
},
+ "node_modules/@fullcalendar/list": {
+ "version": "6.1.15",
+ "resolved": "https://registry.npmjs.org/@fullcalendar/list/-/list-6.1.15.tgz",
+ "integrity": "sha512-U1bce04tYDwkFnuVImJSy2XalYIIQr6YusOWRPM/5ivHcJh67Gm8CIMSWpi3KdRSNKFkqBxLPkfZGBMaOcJYug==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "@fullcalendar/core": "~6.1.15"
+ }
+ },
+ "node_modules/@fullcalendar/multimonth": {
+ "version": "6.1.15",
+ "resolved": "https://registry.npmjs.org/@fullcalendar/multimonth/-/multimonth-6.1.15.tgz",
+ "integrity": "sha512-sEZY6jbOYkeF9TwhUldG+UUVv+hiPlGkS8zZEgPR7ypcjhipyA03c5rPjx7N6huOHqh6lCMH59zlohLooQRlaw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@fullcalendar/daygrid": "~6.1.15"
+ },
+ "peerDependencies": {
+ "@fullcalendar/core": "~6.1.15"
+ }
+ },
+ "node_modules/@fullcalendar/timegrid": {
+ "version": "6.1.15",
+ "resolved": "https://registry.npmjs.org/@fullcalendar/timegrid/-/timegrid-6.1.15.tgz",
+ "integrity": "sha512-61ORr3A148RtxQ2FNG7JKvacyA/TEVZ7z6I+3E9Oeu3dqTf6M928bFcpehRTIK6zIA6Yifs7BeWHgOE9dFnpbw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@fullcalendar/daygrid": "~6.1.15"
+ },
+ "peerDependencies": {
+ "@fullcalendar/core": "~6.1.15"
+ }
+ },
"node_modules/@gar/promisify": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz",
@@ -3533,12 +3576,6 @@
"node": ">=18"
}
},
- "node_modules/@joplin/turndown-plugin-gfm": {
- "version": "1.0.61",
- "resolved": "https://registry.npmjs.org/@joplin/turndown-plugin-gfm/-/turndown-plugin-gfm-1.0.61.tgz",
- "integrity": "sha512-m5PNP1OkktlGgmFI7r/HWON/vQA56GCiM1oTWYkY2JFc28Uc8yHj0nT46pahDyU8uRYPj4TXnxLjQzDDJ11i7w==",
- "license": "MIT"
- },
"node_modules/@jridgewell/gen-mapping": {
"version": "0.3.8",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
@@ -4379,13 +4416,13 @@
}
},
"node_modules/@playwright/test": {
- "version": "1.51.0",
- "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.51.0.tgz",
- "integrity": "sha512-dJ0dMbZeHhI+wb77+ljx/FeC8VBP6j/rj9OAojO08JI80wTZy6vRk9KvHKiDCUh4iMpEiseMgqRBIeW+eKX6RA==",
+ "version": "1.51.1",
+ "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.51.1.tgz",
+ "integrity": "sha512-nM+kEaTSAoVlXmMPH10017vn3FSiFqr/bh4fKg9vmAdMfd9SDqRZNvPSiAHADc/itWak+qPvMPZQOPwCBW7k7Q==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "playwright": "1.51.0"
+ "playwright": "1.51.1"
},
"bin": {
"playwright": "cli.js"
@@ -6365,9 +6402,9 @@
}
},
"node_modules/@vitest/coverage-v8": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.0.8.tgz",
- "integrity": "sha512-y7SAKsQirsEJ2F8bulBck4DoluhI2EEgTimHd6EEUgJBGKy9tC25cpywh1MH4FvDGoG2Unt7+asVd1kj4qOSAw==",
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.0.9.tgz",
+ "integrity": "sha512-15OACZcBtQ34keIEn19JYTVuMFTlFrClclwWjHo/IRPg/8ELpkgNTl0o7WLP9WO9XGH6+tip9CPYtEOrIDJvBA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6388,8 +6425,8 @@
"url": "https://opencollective.com/vitest"
},
"peerDependencies": {
- "@vitest/browser": "3.0.8",
- "vitest": "3.0.8"
+ "@vitest/browser": "3.0.9",
+ "vitest": "3.0.9"
},
"peerDependenciesMeta": {
"@vitest/browser": {
@@ -6398,14 +6435,14 @@
}
},
"node_modules/@vitest/expect": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.8.tgz",
- "integrity": "sha512-Xu6TTIavTvSSS6LZaA3EebWFr6tsoXPetOWNMOlc7LO88QVVBwq2oQWBoDiLCN6YTvNYsGSjqOO8CAdjom5DCQ==",
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.9.tgz",
+ "integrity": "sha512-5eCqRItYgIML7NNVgJj6TVCmdzE7ZVgJhruW0ziSQV4V7PvLkDL1bBkBdcTs/VuIz0IxPb5da1IDSqc1TR9eig==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/spy": "3.0.8",
- "@vitest/utils": "3.0.8",
+ "@vitest/spy": "3.0.9",
+ "@vitest/utils": "3.0.9",
"chai": "^5.2.0",
"tinyrainbow": "^2.0.0"
},
@@ -6414,13 +6451,13 @@
}
},
"node_modules/@vitest/mocker": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.8.tgz",
- "integrity": "sha512-n3LjS7fcW1BCoF+zWZxG7/5XvuYH+lsFg+BDwwAz0arIwHQJFUEsKBQ0BLU49fCxuM/2HSeBPHQD8WjgrxMfow==",
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.9.tgz",
+ "integrity": "sha512-ryERPIBOnvevAkTq+L1lD+DTFBRcjueL9lOUfXsLfwP92h4e+Heb+PjiqS3/OURWPtywfafK0kj++yDFjWUmrA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/spy": "3.0.8",
+ "@vitest/spy": "3.0.9",
"estree-walker": "^3.0.3",
"magic-string": "^0.30.17"
},
@@ -6441,9 +6478,9 @@
}
},
"node_modules/@vitest/pretty-format": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.8.tgz",
- "integrity": "sha512-BNqwbEyitFhzYMYHUVbIvepOyeQOSFA/NeJMIP9enMntkkxLgOcgABH6fjyXG85ipTgvero6noreavGIqfJcIg==",
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.9.tgz",
+ "integrity": "sha512-OW9F8t2J3AwFEwENg3yMyKWweF7oRJlMyHOMIhO5F3n0+cgQAJZBjNgrF8dLwFTEXl5jUqBLXd9QyyKv8zEcmA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6454,13 +6491,13 @@
}
},
"node_modules/@vitest/runner": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.0.8.tgz",
- "integrity": "sha512-c7UUw6gEcOzI8fih+uaAXS5DwjlBaCJUo7KJ4VvJcjL95+DSR1kova2hFuRt3w41KZEFcOEiq098KkyrjXeM5w==",
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.0.9.tgz",
+ "integrity": "sha512-NX9oUXgF9HPfJSwl8tUZCMP1oGx2+Sf+ru6d05QjzQz4OwWg0psEzwY6VexP2tTHWdOkhKHUIZH+fS6nA7jfOw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/utils": "3.0.8",
+ "@vitest/utils": "3.0.9",
"pathe": "^2.0.3"
},
"funding": {
@@ -6475,13 +6512,13 @@
"license": "MIT"
},
"node_modules/@vitest/snapshot": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.8.tgz",
- "integrity": "sha512-x8IlMGSEMugakInj44nUrLSILh/zy1f2/BgH0UeHpNyOocG18M9CWVIFBaXPt8TrqVZWmcPjwfG/ht5tnpba8A==",
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.9.tgz",
+ "integrity": "sha512-AiLUiuZ0FuA+/8i19mTYd+re5jqjEc2jZbgJ2up0VY0Ddyyxg/uUtBDpIFAy4uzKaQxOW8gMgBdAJJ2ydhu39A==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/pretty-format": "3.0.8",
+ "@vitest/pretty-format": "3.0.9",
"magic-string": "^0.30.17",
"pathe": "^2.0.3"
},
@@ -6497,9 +6534,9 @@
"license": "MIT"
},
"node_modules/@vitest/spy": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.8.tgz",
- "integrity": "sha512-MR+PzJa+22vFKYb934CejhR4BeRpMSoxkvNoDit68GQxRLSf11aT6CTj3XaqUU9rxgWJFnqicN/wxw6yBRkI1Q==",
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.9.tgz",
+ "integrity": "sha512-/CcK2UDl0aQ2wtkp3YVWldrpLRNCfVcIOFGlVGKO4R5eajsH393Z1yiXLVQ7vWsj26JOEjeZI0x5sm5P4OGUNQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6510,13 +6547,13 @@
}
},
"node_modules/@vitest/utils": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.8.tgz",
- "integrity": "sha512-nkBC3aEhfX2PdtQI/QwAWp8qZWwzASsU4Npbcd5RdMPBSSLCpkZp52P3xku3s3uA0HIEhGvEcF8rNkBsz9dQ4Q==",
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.9.tgz",
+ "integrity": "sha512-ilHM5fHhZ89MCp5aAaM9uhfl1c2JdxVxl3McqsdVyVNN6JffnEen8UMCdRTzOhGXNQGo5GNL9QugHrz727Wnng==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/pretty-format": "3.0.8",
+ "@vitest/pretty-format": "3.0.9",
"loupe": "^3.1.3",
"tinyrainbow": "^2.0.0"
},
@@ -7387,9 +7424,9 @@
"license": "MIT"
},
"node_modules/better-sqlite3": {
- "version": "11.8.1",
- "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-11.8.1.tgz",
- "integrity": "sha512-9BxNaBkblMjhJW8sMRZxnxVTRgbRmssZW0Oxc1MPBTfiR+WW21e2Mk4qu8CzrcZb1LwPCnFsfDEzq+SNcBU8eg==",
+ "version": "11.9.1",
+ "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-11.9.1.tgz",
+ "integrity": "sha512-Ba0KR+Fzxh2jDRhdg6TSH0SJGzb8C0aBY4hR8w8madIdIzzC6Y1+kx5qR6eS1Z+Gy20h6ZU28aeyg0z1VIrShQ==",
"hasInstallScript": true,
"license": "MIT",
"dependencies": {
@@ -12898,9 +12935,9 @@
}
},
"node_modules/helmet": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/helmet/-/helmet-8.0.0.tgz",
- "integrity": "sha512-VyusHLEIIO5mjQPUI1wpOAEu+wl6Q0998jzTxqUYGE45xCIcAxy3MsbEK/yyJUJ3ADeMoB6MornPH6GMWAf+Pw==",
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/helmet/-/helmet-8.1.0.tgz",
+ "integrity": "sha512-jOiHyAZsmnr8LqoPGmCjYAaiuWwjAPLgY8ZX2XrmHawt99/u1y6RgrZMTeoPfpUbV96HOalYgz1qzkRbw54Pmg==",
"license": "MIT",
"engines": {
"node": ">=18.0.0"
@@ -17013,13 +17050,13 @@
}
},
"node_modules/playwright": {
- "version": "1.51.0",
- "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.51.0.tgz",
- "integrity": "sha512-442pTfGM0xxfCYxuBa/Pu6B2OqxqqaYq39JS8QDMGThUvIOCd6s0ANDog3uwA0cHavVlnTQzGCN7Id2YekDSXA==",
+ "version": "1.51.1",
+ "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.51.1.tgz",
+ "integrity": "sha512-kkx+MB2KQRkyxjYPc3a0wLZZoDczmppyGJIvQ43l+aZihkaVvmu/21kiyaHeHjiFxjxNNFnUncKmcGIyOojsaw==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "playwright-core": "1.51.0"
+ "playwright-core": "1.51.1"
},
"bin": {
"playwright": "cli.js"
@@ -17032,9 +17069,9 @@
}
},
"node_modules/playwright-core": {
- "version": "1.51.0",
- "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.51.0.tgz",
- "integrity": "sha512-x47yPE3Zwhlil7wlNU/iktF7t2r/URR3VLbH6EknJd/04Qc/PSJ0EY3CMXipmglLG+zyRxW6HNo2EGbKLHPWMg==",
+ "version": "1.51.1",
+ "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.51.1.tgz",
+ "integrity": "sha512-/crRMj8+j/Nq5s8QcvegseuyeZPxpQCZb6HNk3Sos3BlZyAknRjoyJPFWkpNn8v0+P3WiwqFF8P+zQo4eqiNuw==",
"dev": true,
"license": "Apache-2.0",
"bin": {
@@ -18609,9 +18646,9 @@
}
},
"node_modules/sass": {
- "version": "1.85.1",
- "resolved": "https://registry.npmjs.org/sass/-/sass-1.85.1.tgz",
- "integrity": "sha512-Uk8WpxM5v+0cMR0XjX9KfRIacmSG86RH4DCCZjLU2rFh5tyutt9siAXJ7G+YfxQ99Q6wrRMbMlVl6KqUms71ag==",
+ "version": "1.86.0",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.86.0.tgz",
+ "integrity": "sha512-zV8vGUld/+mP4KbMLJMX7TyGCuUp7hnkOScgCMsWuHtns8CWBoz+vmEhoGMXsaJrbUP8gj+F1dLvVe79sK8UdA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -19730,6 +19767,13 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/svg-pan-zoom": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/svg-pan-zoom/-/svg-pan-zoom-3.6.2.tgz",
+ "integrity": "sha512-JwnvRWfVKw/Xzfe6jriFyfey/lWJLq4bUh2jwoR5ChWQuQoOH8FEh1l/bEp46iHHKHEJWIyFJETbazraxNWECg==",
+ "dev": true,
+ "license": "BSD-2-Clause"
+ },
"node_modules/swagger-jsdoc": {
"version": "6.2.8",
"resolved": "https://registry.npmjs.org/swagger-jsdoc/-/swagger-jsdoc-6.2.8.tgz",
@@ -21115,9 +21159,9 @@
}
},
"node_modules/vite-node": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.0.8.tgz",
- "integrity": "sha512-6PhR4H9VGlcwXZ+KWCdMqbtG649xCPZqfI9j2PsK1FcXgEzro5bGHcVKFCTqPLaNKZES8Evqv4LwvZARsq5qlg==",
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.0.9.tgz",
+ "integrity": "sha512-w3Gdx7jDcuT9cNn9jExXgOyKmf5UOTb6WMHz8LGAm54eS1Elf5OuBhCxl6zJxGhEeIkgsE1WbHuoL0mj/UXqXg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -21160,19 +21204,19 @@
}
},
"node_modules/vitest": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.0.8.tgz",
- "integrity": "sha512-dfqAsNqRGUc8hB9OVR2P0w8PZPEckti2+5rdZip0WIz9WW0MnImJ8XiR61QhqLa92EQzKP2uPkzenKOAHyEIbA==",
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.0.9.tgz",
+ "integrity": "sha512-BbcFDqNyBlfSpATmTtXOAOj71RNKDDvjBM/uPfnxxVGrG+FSH2RQIwgeEngTaTkuU/h0ScFvf+tRcKfYXzBybQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/expect": "3.0.8",
- "@vitest/mocker": "3.0.8",
- "@vitest/pretty-format": "^3.0.8",
- "@vitest/runner": "3.0.8",
- "@vitest/snapshot": "3.0.8",
- "@vitest/spy": "3.0.8",
- "@vitest/utils": "3.0.8",
+ "@vitest/expect": "3.0.9",
+ "@vitest/mocker": "3.0.9",
+ "@vitest/pretty-format": "^3.0.9",
+ "@vitest/runner": "3.0.9",
+ "@vitest/snapshot": "3.0.9",
+ "@vitest/spy": "3.0.9",
+ "@vitest/utils": "3.0.9",
"chai": "^5.2.0",
"debug": "^4.4.0",
"expect-type": "^1.1.0",
@@ -21184,7 +21228,7 @@
"tinypool": "^1.0.2",
"tinyrainbow": "^2.0.0",
"vite": "^5.0.0 || ^6.0.0",
- "vite-node": "3.0.8",
+ "vite-node": "3.0.9",
"why-is-node-running": "^2.3.0"
},
"bin": {
@@ -21200,8 +21244,8 @@
"@edge-runtime/vm": "*",
"@types/debug": "^4.1.12",
"@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
- "@vitest/browser": "3.0.8",
- "@vitest/ui": "3.0.8",
+ "@vitest/browser": "3.0.9",
+ "@vitest/ui": "3.0.9",
"happy-dom": "*",
"jsdom": "*"
},
diff --git a/package.json b/package.json
index e7d690db6..8db213f1c 100644
--- a/package.json
+++ b/package.json
@@ -20,24 +20,24 @@
},
"type": "module",
"scripts": {
- "server:start": "cross-env TRILIUM_DATA_DIR=./data TRILIUM_ENV=dev TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 nodemon src/main.ts",
- "server:start-safe": "cross-env TRILIUM_DATA_DIR=./data TRILIUM_ENV=dev TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 nodemon src/main.ts",
- "server:start-no-dir": "cross-env TRILIUM_ENV=dev TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 nodemon src/main.ts",
- "server:start-test": "npm run server:switch && rimraf ./data-test && cross-env TRILIUM_DATA_DIR=./data-test TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev TRILIUM_PORT=9999 nodemon src/main.ts",
+ "server:start": "cross-env TRILIUM_DATA_DIR=./data TRILIUM_ENV=dev nodemon src/main.ts",
+ "server:start-safe": "cross-env TRILIUM_DATA_DIR=./data TRILIUM_ENV=dev nodemon src/main.ts",
+ "server:start-no-dir": "cross-env TRILIUM_ENV=dev nodemon src/main.ts",
+ "server:start-test": "npm run server:switch && rimraf ./data-test && cross-env TRILIUM_DATA_DIR=./data-test TRILIUM_ENV=dev TRILIUM_PORT=9999 nodemon src/main.ts",
"server:qstart": "npm run server:switch && npm run server:start",
"server:switch": "rimraf ./node_modules/better-sqlite3 && npm install",
- "electron:start": "cross-env NODE_OPTIONS=\"--import tsx\" TRILIUM_DATA_DIR=./data TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev electron ./electron-main.ts --inspect=5858 .",
+ "electron:start": "cross-env NODE_OPTIONS=\"--import tsx\" TRILIUM_DATA_DIR=./data TRILIUM_ENV=dev electron ./electron-main.ts --inspect=5858 .",
"electron:start-no-dir": "cross-env NODE_OPTIONS=\"--import tsx\" TRILIUM_ENV=dev electron --inspect=5858 .",
- "electron:start-nix": "electron-rebuild --version 33.3.1 && cross-env NODE_OPTIONS=\"--import tsx\" TRILIUM_DATA_DIR=./data TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev nix-shell -p electron_33 --run \"electron ./electron-main.ts --inspect=5858 .\"",
+ "electron:start-nix": "electron-rebuild --version 33.3.1 && cross-env NODE_OPTIONS=\"--import tsx\" TRILIUM_DATA_DIR=./data TRILIUM_ENV=dev nix-shell -p electron_33 --run \"electron ./electron-main.ts --inspect=5858 .\"",
"electron:start-nix-no-dir": "electron-rebuild --version 33.3.1 && cross-env NODE_OPTIONS=\"--import tsx\" TRILIUM_ENV=dev nix-shell -p electron_33 --run \"electron ./electron-main.ts --inspect=5858 .\"",
- "electron:start-prod": "npm run build:prepare-dist && cross-env TRILIUM_DATA_DIR=./data TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=prod electron ./dist/electron-main.js --inspect=5858 .",
+ "electron:start-prod": "npm run build:prepare-dist && cross-env TRILIUM_DATA_DIR=./data TRILIUM_ENV=prod electron ./dist/electron-main.js --inspect=5858 .",
"electron:start-prod-no-dir": "npm run build:prepare-dist && cross-env TRILIUM_ENV=prod electron --inspect=5858 .",
- "electron:start-prod-nix": "electron-rebuild --version 33.3.1 && npm run build:prepare-dist && cross-env TRILIUM_DATA_DIR=./data TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev nix-shell -p electron_33 --run \"electron ./dist/electron-main.js --inspect=5858 .\"",
+ "electron:start-prod-nix": "electron-rebuild --version 33.3.1 && npm run build:prepare-dist && cross-env TRILIUM_DATA_DIR=./data TRILIUM_ENV=dev nix-shell -p electron_33 --run \"electron ./dist/electron-main.js --inspect=5858 .\"",
"electron:start-prod-nix-no-dir": "electron-rebuild --version 33.3.1 && npm run build:prepare-dist && cross-env TRILIUM_ENV=dev nix-shell -p electron_33 --run \"electron ./dist/electron-main.js --inspect=5858 .\"",
"electron:qstart": "npm run electron:switch && npm run electron:start",
"electron:switch": "electron-rebuild",
"docs:edit": "cross-env NODE_OPTIONS=\"--import tsx\" TRILIUM_DATA_DIR=./data-docs TRILIUM_ENV=dev TRILIUM_PORT=37741 electron ./electron-docs-main.ts .",
- "docs:edit-nix": "electron-rebuild --version 33.3.1 && cross-env NODE_OPTIONS=\"--import tsx\" TRILIUM_DATA_DIR=./data-docs TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_PORT=37741 TRILIUM_ENV=dev nix-shell -p electron_33 --run \"electron ./electron-docs-main.ts .\"",
+ "docs:edit-nix": "electron-rebuild --version 33.3.1 && cross-env NODE_OPTIONS=\"--import tsx\" TRILIUM_DATA_DIR=./data-docs TRILIUM_PORT=37741 TRILIUM_ENV=dev nix-shell -p electron_33 --run \"electron ./electron-docs-main.ts .\"",
"electron-forge:prepare": "npm run build:prepare-dist && cp -r node_modules ./build",
"electron-forge:start": "npm run electron-forge:prepare && cd ./build && electron-forge start",
"electron-forge:make": "npm run electron-forge:prepare && cd ./build && electron-forge make",
@@ -72,11 +72,7 @@
"@braintree/sanitize-url": "7.1.1",
"@electron/remote": "2.1.2",
"@excalidraw/excalidraw": "0.18.0",
- "@fullcalendar/core": "6.1.15",
- "@fullcalendar/daygrid": "6.1.15",
- "@fullcalendar/interaction": "6.1.15",
"@highlightjs/cdn-assets": "11.11.1",
- "@joplin/turndown-plugin-gfm": "1.0.61",
"@mermaid-js/layout-elk": "0.1.7",
"@mind-elixir/node-menu": "1.0.4",
"@triliumnext/express-partial-content": "1.0.1",
@@ -84,7 +80,7 @@
"async-mutex": "0.5.0",
"autocomplete.js": "0.38.1",
"axios": "1.8.3",
- "better-sqlite3": "11.8.1",
+ "better-sqlite3": "11.9.1",
"boxicons": "2.1.4",
"chardet": "2.1.0",
"cheerio": "1.0.0",
@@ -110,7 +106,7 @@
"express-session": "1.18.1",
"force-graph": "1.49.4",
"fs-extra": "11.3.0",
- "helmet": "8.0.0",
+ "helmet": "8.1.0",
"html": "1.0.0",
"html2plaintext": "2.1.4",
"http-proxy-agent": "7.0.2",
@@ -173,7 +169,13 @@
"@electron-forge/plugin-auto-unpack-natives": "7.7.0",
"@electron/rebuild": "3.7.1",
"@eslint/js": "9.22.0",
- "@playwright/test": "1.51.0",
+ "@fullcalendar/core": "6.1.15",
+ "@fullcalendar/daygrid": "6.1.15",
+ "@fullcalendar/interaction": "6.1.15",
+ "@fullcalendar/list": "6.1.15",
+ "@fullcalendar/multimonth": "6.1.15",
+ "@fullcalendar/timegrid": "6.1.15",
+ "@playwright/test": "1.51.1",
"@popperjs/core": "2.11.8",
"@types/archiver": "6.0.3",
"@types/better-sqlite3": "7.6.12",
@@ -215,7 +217,7 @@
"@types/ws": "8.18.0",
"@types/xml2js": "0.4.14",
"@types/yargs": "17.0.33",
- "@vitest/coverage-v8": "3.0.8",
+ "@vitest/coverage-v8": "3.0.9",
"autoprefixer": "10.4.21",
"bootstrap": "5.3.3",
"cross-env": "7.0.3",
@@ -235,10 +237,11 @@
"prettier": "3.5.3",
"rcedit": "4.0.1",
"rimraf": "6.0.1",
- "sass": "1.85.1",
+ "sass": "1.86.0",
"sass-loader": "16.0.5",
"split.js": "1.6.5",
"supertest": "7.0.0",
+ "svg-pan-zoom": "3.6.2",
"swagger-jsdoc": "6.2.8",
"ts-loader": "9.5.2",
"tslib": "2.8.1",
@@ -246,7 +249,7 @@
"typedoc": "0.28.0",
"typescript": "5.8.2",
"typescript-eslint": "8.26.1",
- "vitest": "3.0.8",
+ "vitest": "3.0.9",
"webpack": "5.98.0",
"webpack-cli": "6.0.1",
"webpack-dev-middleware": "7.4.2"
diff --git a/packages/turndown-plugin-gfm/.gitignore b/packages/turndown-plugin-gfm/.gitignore
new file mode 100644
index 000000000..9b85d3d27
--- /dev/null
+++ b/packages/turndown-plugin-gfm/.gitignore
@@ -0,0 +1,5 @@
+dist
+lib
+node_modules
+npm-debug.log
+test/*browser.js
diff --git a/packages/turndown-plugin-gfm/.travis.yml b/packages/turndown-plugin-gfm/.travis.yml
new file mode 100644
index 000000000..a52318743
--- /dev/null
+++ b/packages/turndown-plugin-gfm/.travis.yml
@@ -0,0 +1,4 @@
+language: node_js
+node_js:
+ - "node"
+ - "6"
diff --git a/packages/turndown-plugin-gfm/LICENSE b/packages/turndown-plugin-gfm/LICENSE
new file mode 100644
index 000000000..02b58935f
--- /dev/null
+++ b/packages/turndown-plugin-gfm/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2017 Dom Christie
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/packages/turndown-plugin-gfm/README.md b/packages/turndown-plugin-gfm/README.md
new file mode 100644
index 000000000..b9f1ab294
--- /dev/null
+++ b/packages/turndown-plugin-gfm/README.md
@@ -0,0 +1,64 @@
+# turndown-plugin-gfm
+
+A [Turndown](https://github.com/domchristie/turndown) plugin which adds GitHub Flavored Markdown extensions.
+
+This is a fork of the original [turndown-plugin-gfm](https://github.com/domchristie/turndown-plugin-gfm) for use with [Joplin](https://github.com/laurent22/joplin). The changes are:
+
+- New: Always render tables even if they don't have a header.
+- New: Don't render the border of tables that contain other tables (frequent for websites that do the layout using tables). Only render the inner tables, if any, and if they also don't contain other tables.
+- New: Replace newlines (`\n`) with ` ` inside table cells so that multi-line content is displayed correctly as Markdown.
+- New: Table cells are at least three characters long (padded with spaces) so that they render correctly in GFM-compliant renderers.
+- New: Handle colspan in TD tags
+- Fixed: Ensure there are no blank lines inside tables (due for example to an empty `` tag)
+- Fixed: Fixed importing tables that contain pipes.
+
+## Installation
+
+npm:
+
+```
+npm install @joplin/turndown-plugin-gfm
+```
+
+## Usage
+
+```js
+// For Node.js
+var TurndownService = require('@joplin/turndown')
+var turndownPluginGfm = require('@joplin/turndown-plugin-gfm')
+
+var gfm = turndownPluginGfm.gfm
+var turndownService = new TurndownService()
+turndownService.use(gfm)
+var markdown = turndownService.turndown('Hello world! ')
+```
+
+turndown-plugin-gfm is a suite of plugins which can be applied individually. The available plugins are as follows:
+
+- `strikethrough` (for converting ``, ``, and `` elements)
+- `tables`
+- `taskListItems`
+- `gfm` (which applies all of the above)
+
+So for example, if you only wish to convert tables:
+
+```js
+var tables = require('@joplin/turndown-plugin-gfm').tables
+var turndownService = new TurndownService()
+turndownService.use(tables)
+```
+
+### Typescript
+
+To use this in a typescript project, add this to a `declarations.d.ts` file, as described in https://www.npmjs.com/package/@joplin/turndown, and then add:
+
+```ts
+declare module "@joplin/turndown-plugin-gfm" {
+ export const gfm: any;
+ // Add other named exports if necessary
+}
+```
+
+## License
+
+turndown-plugin-gfm is copyright © 2017+ Dom Christie and released under the MIT license.
diff --git a/packages/turndown-plugin-gfm/build_for_test.sh b/packages/turndown-plugin-gfm/build_for_test.sh
new file mode 100755
index 000000000..9cf93ad68
--- /dev/null
+++ b/packages/turndown-plugin-gfm/build_for_test.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+set -e
+
+SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
+ROOT_DIR="$SCRIPT_DIR/../.."
+
+npm run build
+cd $ROOT_DIR/packages/app-cli && npm run test -- HtmlToMd
\ No newline at end of file
diff --git a/packages/turndown-plugin-gfm/config/rollup.config.browser.cjs.js b/packages/turndown-plugin-gfm/config/rollup.config.browser.cjs.js
new file mode 100644
index 000000000..da106af42
--- /dev/null
+++ b/packages/turndown-plugin-gfm/config/rollup.config.browser.cjs.js
@@ -0,0 +1,8 @@
+import config from './rollup.config';
+
+export default config({
+ output: {
+ format: 'cjs',
+ file: 'lib/turndown-plugin-gfm.browser.cjs.js',
+ },
+});
diff --git a/packages/turndown-plugin-gfm/config/rollup.config.browser.es.js b/packages/turndown-plugin-gfm/config/rollup.config.browser.es.js
new file mode 100644
index 000000000..595d72caf
--- /dev/null
+++ b/packages/turndown-plugin-gfm/config/rollup.config.browser.es.js
@@ -0,0 +1,8 @@
+import config from './rollup.config';
+
+export default config({
+ output: {
+ format: 'es',
+ file: 'lib/turndown-plugin-gfm.browser.es.js',
+ },
+});
diff --git a/packages/turndown-plugin-gfm/config/rollup.config.cjs.js b/packages/turndown-plugin-gfm/config/rollup.config.cjs.js
new file mode 100644
index 000000000..892b93273
--- /dev/null
+++ b/packages/turndown-plugin-gfm/config/rollup.config.cjs.js
@@ -0,0 +1,8 @@
+import config from './rollup.config';
+
+export default config({
+ output: {
+ format: 'cjs',
+ file: 'lib/turndown-plugin-gfm.cjs.js',
+ },
+});
diff --git a/packages/turndown-plugin-gfm/config/rollup.config.es.js b/packages/turndown-plugin-gfm/config/rollup.config.es.js
new file mode 100644
index 000000000..e3c2663f0
--- /dev/null
+++ b/packages/turndown-plugin-gfm/config/rollup.config.es.js
@@ -0,0 +1,8 @@
+import config from './rollup.config';
+
+export default config({
+ output: {
+ format: 'es',
+ file: 'lib/turndown-plugin-gfm.es.js',
+ },
+});
diff --git a/packages/turndown-plugin-gfm/config/rollup.config.iife.js b/packages/turndown-plugin-gfm/config/rollup.config.iife.js
new file mode 100644
index 000000000..a3e73e994
--- /dev/null
+++ b/packages/turndown-plugin-gfm/config/rollup.config.iife.js
@@ -0,0 +1,8 @@
+import config from './rollup.config';
+
+export default config({
+ output: {
+ format: 'iife',
+ file: 'dist/turndown-plugin-gfm.js',
+ },
+});
diff --git a/packages/turndown-plugin-gfm/config/rollup.config.js b/packages/turndown-plugin-gfm/config/rollup.config.js
new file mode 100644
index 000000000..ce748beba
--- /dev/null
+++ b/packages/turndown-plugin-gfm/config/rollup.config.js
@@ -0,0 +1,7 @@
+export default function(config) {
+ return {
+ name: 'turndownPluginGfm',
+ input: 'src/gfm.js',
+ output: config.output,
+ };
+}
diff --git a/packages/turndown-plugin-gfm/package-lock.json b/packages/turndown-plugin-gfm/package-lock.json
new file mode 100644
index 000000000..d47aa908a
--- /dev/null
+++ b/packages/turndown-plugin-gfm/package-lock.json
@@ -0,0 +1,3595 @@
+{
+ "name": "joplin-turndown-plugin-gfm",
+ "version": "1.0.12",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "@types/node": {
+ "version": "6.0.90",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.90.tgz",
+ "integrity": "sha512-tXoGRVdi7wZX7P1VWoV9Wfk0uYDOAHdEYXAttuWgSrN76Q32wQlSrMX0Rgyv3RTEaQY2ZLQrzYHVM2e8rfo8sA==",
+ "dev": true
+ },
+ "JSONStream": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.1.tgz",
+ "integrity": "sha1-cH92HgHa6eFvG8+TcDt4xwlmV5o=",
+ "dev": true,
+ "requires": {
+ "jsonparse": "^1.2.0",
+ "through": ">=2.2.7 <3"
+ }
+ },
+ "abab": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz",
+ "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=",
+ "dev": true
+ },
+ "acorn": {
+ "version": "4.0.13",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz",
+ "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=",
+ "dev": true
+ },
+ "acorn-globals": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.1.0.tgz",
+ "integrity": "sha512-KjZwU26uG3u6eZcfGbTULzFcsoz6pegNKtHPksZPOUsiKo5bUmiBPa38FuHZ/Eun+XYh/JCCkS9AS3Lu4McQOQ==",
+ "dev": true,
+ "requires": {
+ "acorn": "^5.0.0"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz",
+ "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==",
+ "dev": true
+ }
+ }
+ },
+ "acorn-jsx": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz",
+ "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=",
+ "dev": true,
+ "requires": {
+ "acorn": "^3.0.4"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz",
+ "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=",
+ "dev": true
+ }
+ }
+ },
+ "ajv": {
+ "version": "5.5.2",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
+ "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
+ "dev": true,
+ "requires": {
+ "co": "^4.6.0",
+ "fast-deep-equal": "^1.0.0",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.3.0"
+ }
+ },
+ "ajv-keywords": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz",
+ "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=",
+ "dev": true
+ },
+ "ansi-escapes": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz",
+ "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=",
+ "dev": true
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "requires": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "array-equal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz",
+ "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=",
+ "dev": true
+ },
+ "array-filter": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz",
+ "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=",
+ "dev": true
+ },
+ "array-map": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz",
+ "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=",
+ "dev": true
+ },
+ "array-reduce": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz",
+ "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=",
+ "dev": true
+ },
+ "array-union": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
+ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+ "dev": true,
+ "requires": {
+ "array-uniq": "^1.0.1"
+ }
+ },
+ "array-uniq": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
+ "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
+ "dev": true
+ },
+ "array.prototype.find": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.0.4.tgz",
+ "integrity": "sha1-VWpcU2LAhkgyPdrrnenRS8GGTJA=",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.2",
+ "es-abstract": "^1.7.0"
+ }
+ },
+ "arrify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
+ "dev": true
+ },
+ "asn1": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
+ "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=",
+ "dev": true
+ },
+ "asn1.js": {
+ "version": "4.9.2",
+ "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.2.tgz",
+ "integrity": "sha512-b/OsSjvWEo8Pi8H0zsDd2P6Uqo2TK2pH8gNLSJtNLM2Db0v2QaAZ0pBQJXVjAn4gBuugeVDr7s63ZogpUIwWDg==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.0.0",
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0"
+ }
+ },
+ "assert": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz",
+ "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=",
+ "dev": true,
+ "requires": {
+ "util": "0.10.3"
+ }
+ },
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+ "dev": true
+ },
+ "astw": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/astw/-/astw-2.2.0.tgz",
+ "integrity": "sha1-e9QXhNMkk5h66yOba04cV6hzuRc=",
+ "dev": true,
+ "requires": {
+ "acorn": "^4.0.3"
+ }
+ },
+ "asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
+ "dev": true
+ },
+ "aws-sign2": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
+ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
+ "dev": true
+ },
+ "aws4": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz",
+ "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==",
+ "dev": true
+ },
+ "babel-code-frame": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
+ "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
+ "dev": true,
+ "requires": {
+ "chalk": "^1.1.3",
+ "esutils": "^2.0.2",
+ "js-tokens": "^3.0.2"
+ }
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+ "dev": true
+ },
+ "base64-js": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz",
+ "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==",
+ "dev": true
+ },
+ "bcrypt-pbkdf": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
+ "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "tweetnacl": "^0.14.3"
+ }
+ },
+ "bn.js": {
+ "version": "4.11.8",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
+ "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
+ "dev": true
+ },
+ "boom": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz",
+ "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=",
+ "dev": true,
+ "requires": {
+ "hoek": "4.x.x"
+ }
+ },
+ "brace-expansion": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
+ "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
+ "dev": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "brorand": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
+ "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
+ "dev": true
+ },
+ "browser-pack": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.0.2.tgz",
+ "integrity": "sha1-+GzWzvT1MAyOY+B6TVEvZfv/RTE=",
+ "dev": true,
+ "requires": {
+ "JSONStream": "^1.0.3",
+ "combine-source-map": "~0.7.1",
+ "defined": "^1.0.0",
+ "through2": "^2.0.0",
+ "umd": "^3.0.0"
+ }
+ },
+ "browser-process-hrtime": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz",
+ "integrity": "sha1-Ql1opY00R/AqBKqJQYf86K+Le44=",
+ "dev": true
+ },
+ "browser-resolve": {
+ "version": "1.11.2",
+ "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz",
+ "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=",
+ "dev": true,
+ "requires": {
+ "resolve": "1.1.7"
+ },
+ "dependencies": {
+ "resolve": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
+ "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
+ "dev": true
+ }
+ }
+ },
+ "browserify": {
+ "version": "14.5.0",
+ "resolved": "https://registry.npmjs.org/browserify/-/browserify-14.5.0.tgz",
+ "integrity": "sha512-gKfOsNQv/toWz+60nSPfYzuwSEdzvV2WdxrVPUbPD/qui44rAkB3t3muNtmmGYHqrG56FGwX9SUEQmzNLAeS7g==",
+ "dev": true,
+ "requires": {
+ "JSONStream": "^1.0.3",
+ "assert": "^1.4.0",
+ "browser-pack": "^6.0.1",
+ "browser-resolve": "^1.11.0",
+ "browserify-zlib": "~0.2.0",
+ "buffer": "^5.0.2",
+ "cached-path-relative": "^1.0.0",
+ "concat-stream": "~1.5.1",
+ "console-browserify": "^1.1.0",
+ "constants-browserify": "~1.0.0",
+ "crypto-browserify": "^3.0.0",
+ "defined": "^1.0.0",
+ "deps-sort": "^2.0.0",
+ "domain-browser": "~1.1.0",
+ "duplexer2": "~0.1.2",
+ "events": "~1.1.0",
+ "glob": "^7.1.0",
+ "has": "^1.0.0",
+ "htmlescape": "^1.1.0",
+ "https-browserify": "^1.0.0",
+ "inherits": "~2.0.1",
+ "insert-module-globals": "^7.0.0",
+ "labeled-stream-splicer": "^2.0.0",
+ "module-deps": "^4.0.8",
+ "os-browserify": "~0.3.0",
+ "parents": "^1.0.1",
+ "path-browserify": "~0.0.0",
+ "process": "~0.11.0",
+ "punycode": "^1.3.2",
+ "querystring-es3": "~0.2.0",
+ "read-only-stream": "^2.0.0",
+ "readable-stream": "^2.0.2",
+ "resolve": "^1.1.4",
+ "shasum": "^1.0.0",
+ "shell-quote": "^1.6.1",
+ "stream-browserify": "^2.0.0",
+ "stream-http": "^2.0.0",
+ "string_decoder": "~1.0.0",
+ "subarg": "^1.0.0",
+ "syntax-error": "^1.1.1",
+ "through2": "^2.0.0",
+ "timers-browserify": "^1.0.1",
+ "tty-browserify": "~0.0.0",
+ "url": "~0.11.0",
+ "util": "~0.10.1",
+ "vm-browserify": "~0.0.1",
+ "xtend": "^4.0.0"
+ },
+ "dependencies": {
+ "concat-stream": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz",
+ "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=",
+ "dev": true,
+ "requires": {
+ "inherits": "~2.0.1",
+ "readable-stream": "~2.0.0",
+ "typedarray": "~0.0.5"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
+ "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~1.0.6",
+ "string_decoder": "~0.10.x",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "browserify-aes": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz",
+ "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==",
+ "dev": true,
+ "requires": {
+ "buffer-xor": "^1.0.3",
+ "cipher-base": "^1.0.0",
+ "create-hash": "^1.1.0",
+ "evp_bytestokey": "^1.0.3",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "browserify-cipher": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz",
+ "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=",
+ "dev": true,
+ "requires": {
+ "browserify-aes": "^1.0.4",
+ "browserify-des": "^1.0.0",
+ "evp_bytestokey": "^1.0.0"
+ }
+ },
+ "browserify-des": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz",
+ "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=",
+ "dev": true,
+ "requires": {
+ "cipher-base": "^1.0.1",
+ "des.js": "^1.0.0",
+ "inherits": "^2.0.1"
+ }
+ },
+ "browserify-rsa": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
+ "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "randombytes": "^2.0.1"
+ }
+ },
+ "browserify-sign": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
+ "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.1",
+ "browserify-rsa": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "create-hmac": "^1.1.2",
+ "elliptic": "^6.0.0",
+ "inherits": "^2.0.1",
+ "parse-asn1": "^5.0.0"
+ }
+ },
+ "browserify-zlib": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
+ "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
+ "dev": true,
+ "requires": {
+ "pako": "~1.0.5"
+ }
+ },
+ "buffer": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.0.8.tgz",
+ "integrity": "sha512-xXvjQhVNz50v2nPeoOsNqWCLGfiv4ji/gXZM28jnVwdLJxH4mFyqgqCKfaK9zf1KUbG6zTkjLOy7ou+jSMarGA==",
+ "dev": true,
+ "requires": {
+ "base64-js": "^1.0.2",
+ "ieee754": "^1.1.4"
+ }
+ },
+ "buffer-xor": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
+ "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
+ "dev": true
+ },
+ "builtin-modules": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
+ "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
+ "dev": true
+ },
+ "builtin-status-codes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
+ "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
+ "dev": true
+ },
+ "cached-path-relative": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.2.tgz",
+ "integrity": "sha512-5r2GqsoEb4qMTTN9J+WzXfjov+hjxT+j3u5K+kIVNIwAd99DLCJE9pBIMP1qVeybV6JiijL385Oz0DcYxfbOIg==",
+ "dev": true
+ },
+ "caller-path": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz",
+ "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=",
+ "dev": true,
+ "requires": {
+ "callsites": "^0.2.0"
+ }
+ },
+ "callsites": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz",
+ "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=",
+ "dev": true
+ },
+ "caseless": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ }
+ },
+ "cipher-base": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
+ "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "circular-json": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz",
+ "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==",
+ "dev": true
+ },
+ "cli-cursor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz",
+ "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "^1.0.1"
+ }
+ },
+ "cli-width": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
+ "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
+ "dev": true
+ },
+ "co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
+ "dev": true
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
+ "dev": true
+ },
+ "combine-source-map": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.7.2.tgz",
+ "integrity": "sha1-CHAxKFazB6h8xKxIbzqaYq7MwJ4=",
+ "dev": true,
+ "requires": {
+ "convert-source-map": "~1.1.0",
+ "inline-source-map": "~0.6.0",
+ "lodash.memoize": "~3.0.3",
+ "source-map": "~0.5.3"
+ }
+ },
+ "combined-stream": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
+ "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
+ "dev": true,
+ "requires": {
+ "delayed-stream": "~1.0.0"
+ }
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+ "dev": true
+ },
+ "concat-stream": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz",
+ "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
+ }
+ },
+ "console-browserify": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
+ "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
+ "dev": true,
+ "requires": {
+ "date-now": "^0.1.4"
+ }
+ },
+ "constants-browserify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
+ "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
+ "dev": true
+ },
+ "contains-path": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz",
+ "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=",
+ "dev": true
+ },
+ "content-type-parser": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.2.tgz",
+ "integrity": "sha512-lM4l4CnMEwOLHAHr/P6MEZwZFPJFtAAKgL6pogbXmVZggIqXhdB6RbBtPOTsw2FcXwYhehRGERJmRrjOiIB8pQ==",
+ "dev": true
+ },
+ "convert-source-map": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz",
+ "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=",
+ "dev": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+ "dev": true
+ },
+ "create-ecdh": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz",
+ "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "elliptic": "^6.0.0"
+ }
+ },
+ "create-hash": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz",
+ "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=",
+ "dev": true,
+ "requires": {
+ "cipher-base": "^1.0.1",
+ "inherits": "^2.0.1",
+ "ripemd160": "^2.0.0",
+ "sha.js": "^2.4.0"
+ }
+ },
+ "create-hmac": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz",
+ "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=",
+ "dev": true,
+ "requires": {
+ "cipher-base": "^1.0.3",
+ "create-hash": "^1.1.0",
+ "inherits": "^2.0.1",
+ "ripemd160": "^2.0.0",
+ "safe-buffer": "^5.0.1",
+ "sha.js": "^2.4.8"
+ }
+ },
+ "cryptiles": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz",
+ "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=",
+ "dev": true,
+ "requires": {
+ "boom": "5.x.x"
+ },
+ "dependencies": {
+ "boom": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz",
+ "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==",
+ "dev": true,
+ "requires": {
+ "hoek": "4.x.x"
+ }
+ }
+ }
+ },
+ "crypto-browserify": {
+ "version": "3.11.1",
+ "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.1.tgz",
+ "integrity": "sha512-Na7ZlwCOqoaW5RwUK1WpXws2kv8mNhWdTlzob0UXulk6G9BDbyiJaGTYBIX61Ozn9l1EPPJpICZb4DaOpT9NlQ==",
+ "dev": true,
+ "requires": {
+ "browserify-cipher": "^1.0.0",
+ "browserify-sign": "^4.0.0",
+ "create-ecdh": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "create-hmac": "^1.1.0",
+ "diffie-hellman": "^5.0.0",
+ "inherits": "^2.0.1",
+ "pbkdf2": "^3.0.3",
+ "public-encrypt": "^4.0.0",
+ "randombytes": "^2.0.0"
+ }
+ },
+ "cssom": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz",
+ "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=",
+ "dev": true
+ },
+ "cssstyle": {
+ "version": "0.2.37",
+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz",
+ "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=",
+ "dev": true,
+ "requires": {
+ "cssom": "0.3.x"
+ }
+ },
+ "d": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
+ "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
+ "dev": true,
+ "requires": {
+ "es5-ext": "^0.10.9"
+ }
+ },
+ "dashdash": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "^1.0.0"
+ }
+ },
+ "date-now": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
+ "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=",
+ "dev": true
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "debug-log": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz",
+ "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=",
+ "dev": true
+ },
+ "deep-equal": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz",
+ "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=",
+ "dev": true
+ },
+ "deep-is": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
+ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
+ "dev": true
+ },
+ "define-properties": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz",
+ "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=",
+ "dev": true,
+ "requires": {
+ "foreach": "^2.0.5",
+ "object-keys": "^1.0.8"
+ }
+ },
+ "defined": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
+ "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=",
+ "dev": true
+ },
+ "deglob": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/deglob/-/deglob-2.1.0.tgz",
+ "integrity": "sha1-TUSr4W7zLHebSXK9FBqAMlApoUo=",
+ "dev": true,
+ "requires": {
+ "find-root": "^1.0.0",
+ "glob": "^7.0.5",
+ "ignore": "^3.0.9",
+ "pkg-config": "^1.1.0",
+ "run-parallel": "^1.1.2",
+ "uniq": "^1.0.1"
+ }
+ },
+ "del": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz",
+ "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=",
+ "dev": true,
+ "requires": {
+ "globby": "^5.0.0",
+ "is-path-cwd": "^1.0.0",
+ "is-path-in-cwd": "^1.0.0",
+ "object-assign": "^4.0.1",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0",
+ "rimraf": "^2.2.8"
+ }
+ },
+ "delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
+ "dev": true
+ },
+ "deps-sort": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.0.tgz",
+ "integrity": "sha1-CRckkC6EZYJg65EHSMzNGvbiH7U=",
+ "dev": true,
+ "requires": {
+ "JSONStream": "^1.0.3",
+ "shasum": "^1.0.0",
+ "subarg": "^1.0.0",
+ "through2": "^2.0.0"
+ }
+ },
+ "des.js": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz",
+ "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0"
+ }
+ },
+ "detective": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/detective/-/detective-4.5.0.tgz",
+ "integrity": "sha1-blqMaybmx6JUsca210kNmOyR7dE=",
+ "dev": true,
+ "requires": {
+ "acorn": "^4.0.3",
+ "defined": "^1.0.0"
+ }
+ },
+ "diffie-hellman": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz",
+ "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "miller-rabin": "^4.0.0",
+ "randombytes": "^2.0.0"
+ }
+ },
+ "doctrine": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz",
+ "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "isarray": "^1.0.0"
+ }
+ },
+ "domain-browser": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz",
+ "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=",
+ "dev": true
+ },
+ "domexception": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.0.tgz",
+ "integrity": "sha512-WpwuBlZ2lQRFa4H/4w49deb9rJLot9KmqrKKjMc9qBl7CID+DdC2swoa34ccRl+anL2B6bLp6TjFdIdnzekMBQ==",
+ "dev": true
+ },
+ "duplexer2": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
+ "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "^2.0.2"
+ }
+ },
+ "ecc-jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
+ "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "jsbn": "~0.1.0"
+ }
+ },
+ "elliptic": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz",
+ "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.4.0",
+ "brorand": "^1.0.1",
+ "hash.js": "^1.0.0",
+ "hmac-drbg": "^1.0.0",
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0",
+ "minimalistic-crypto-utils": "^1.0.0"
+ }
+ },
+ "error-ex": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
+ "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=",
+ "dev": true,
+ "requires": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "es-abstract": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.9.0.tgz",
+ "integrity": "sha512-kk3IJoKo7A3pWJc0OV8yZ/VEX2oSUytfekrJiqoxBlKJMFAJVJVpGdHClCCTdv+Fn2zHfpDHHIelMFhZVfef3Q==",
+ "dev": true,
+ "requires": {
+ "es-to-primitive": "^1.1.1",
+ "function-bind": "^1.1.1",
+ "has": "^1.0.1",
+ "is-callable": "^1.1.3",
+ "is-regex": "^1.0.4"
+ }
+ },
+ "es-to-primitive": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz",
+ "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=",
+ "dev": true,
+ "requires": {
+ "is-callable": "^1.1.1",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.1"
+ }
+ },
+ "es5-ext": {
+ "version": "0.10.35",
+ "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.35.tgz",
+ "integrity": "sha1-GO6FjOajxFx9eekcFfzKnsVoSU8=",
+ "dev": true,
+ "requires": {
+ "es6-iterator": "~2.0.1",
+ "es6-symbol": "~3.1.1"
+ }
+ },
+ "es6-iterator": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
+ "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
+ "dev": true,
+ "requires": {
+ "d": "1",
+ "es5-ext": "^0.10.35",
+ "es6-symbol": "^3.1.1"
+ }
+ },
+ "es6-map": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz",
+ "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=",
+ "dev": true,
+ "requires": {
+ "d": "1",
+ "es5-ext": "~0.10.14",
+ "es6-iterator": "~2.0.1",
+ "es6-set": "~0.1.5",
+ "es6-symbol": "~3.1.1",
+ "event-emitter": "~0.3.5"
+ }
+ },
+ "es6-set": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz",
+ "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=",
+ "dev": true,
+ "requires": {
+ "d": "1",
+ "es5-ext": "~0.10.14",
+ "es6-iterator": "~2.0.1",
+ "es6-symbol": "3.1.1",
+ "event-emitter": "~0.3.5"
+ }
+ },
+ "es6-symbol": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
+ "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
+ "dev": true,
+ "requires": {
+ "d": "1",
+ "es5-ext": "~0.10.14"
+ }
+ },
+ "es6-weak-map": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz",
+ "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=",
+ "dev": true,
+ "requires": {
+ "d": "1",
+ "es5-ext": "^0.10.14",
+ "es6-iterator": "^2.0.1",
+ "es6-symbol": "^3.1.1"
+ }
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "dev": true
+ },
+ "escodegen": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz",
+ "integrity": "sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw==",
+ "dev": true,
+ "requires": {
+ "esprima": "^3.1.3",
+ "estraverse": "^4.2.0",
+ "esutils": "^2.0.2",
+ "optionator": "^0.8.1",
+ "source-map": "~0.5.6"
+ }
+ },
+ "escope": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz",
+ "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=",
+ "dev": true,
+ "requires": {
+ "es6-map": "^0.1.3",
+ "es6-weak-map": "^2.0.1",
+ "esrecurse": "^4.1.0",
+ "estraverse": "^4.1.1"
+ }
+ },
+ "eslint": {
+ "version": "3.19.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz",
+ "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=",
+ "dev": true,
+ "requires": {
+ "babel-code-frame": "^6.16.0",
+ "chalk": "^1.1.3",
+ "concat-stream": "^1.5.2",
+ "debug": "^2.1.1",
+ "doctrine": "^2.0.0",
+ "escope": "^3.6.0",
+ "espree": "^3.4.0",
+ "esquery": "^1.0.0",
+ "estraverse": "^4.2.0",
+ "esutils": "^2.0.2",
+ "file-entry-cache": "^2.0.0",
+ "glob": "^7.0.3",
+ "globals": "^9.14.0",
+ "ignore": "^3.2.0",
+ "imurmurhash": "^0.1.4",
+ "inquirer": "^0.12.0",
+ "is-my-json-valid": "^2.10.0",
+ "is-resolvable": "^1.0.0",
+ "js-yaml": "^3.5.1",
+ "json-stable-stringify": "^1.0.0",
+ "levn": "^0.3.0",
+ "lodash": "^4.0.0",
+ "mkdirp": "^0.5.0",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.8.2",
+ "path-is-inside": "^1.0.1",
+ "pluralize": "^1.2.1",
+ "progress": "^1.1.8",
+ "require-uncached": "^1.0.2",
+ "shelljs": "^0.7.5",
+ "strip-bom": "^3.0.0",
+ "strip-json-comments": "~2.0.1",
+ "table": "^3.7.8",
+ "text-table": "~0.2.0",
+ "user-home": "^2.0.0"
+ }
+ },
+ "eslint-config-standard": {
+ "version": "10.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz",
+ "integrity": "sha1-wGHk0GbzedwXzVYsZOgZtN1FRZE=",
+ "dev": true
+ },
+ "eslint-config-standard-jsx": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-4.0.2.tgz",
+ "integrity": "sha512-F8fRh2WFnTek7dZH9ZaE0PCBwdVGkwVWZmizla/DDNOmg7Tx6B/IlK5+oYpiX29jpu73LszeJj5i1axEZv6VMw==",
+ "dev": true
+ },
+ "eslint-import-resolver-node": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.2.3.tgz",
+ "integrity": "sha1-Wt2BBujJKNssuiMrzZ76hG49oWw=",
+ "dev": true,
+ "requires": {
+ "debug": "^2.2.0",
+ "object-assign": "^4.0.1",
+ "resolve": "^1.1.6"
+ }
+ },
+ "eslint-module-utils": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz",
+ "integrity": "sha512-jDI/X5l/6D1rRD/3T43q8Qgbls2nq5km5KSqiwlyUbGo5+04fXhMKdCPhjwbqAa6HXWaMxj8Q4hQDIh7IadJQw==",
+ "dev": true,
+ "requires": {
+ "debug": "^2.6.8",
+ "pkg-dir": "^1.0.0"
+ }
+ },
+ "eslint-plugin-import": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.2.0.tgz",
+ "integrity": "sha1-crowb60wXWfEgWNIpGmaQimsi04=",
+ "dev": true,
+ "requires": {
+ "builtin-modules": "^1.1.1",
+ "contains-path": "^0.1.0",
+ "debug": "^2.2.0",
+ "doctrine": "1.5.0",
+ "eslint-import-resolver-node": "^0.2.0",
+ "eslint-module-utils": "^2.0.0",
+ "has": "^1.0.1",
+ "lodash.cond": "^4.3.0",
+ "minimatch": "^3.0.3",
+ "pkg-up": "^1.0.0"
+ },
+ "dependencies": {
+ "doctrine": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
+ "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "isarray": "^1.0.0"
+ }
+ }
+ }
+ },
+ "eslint-plugin-node": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-4.2.3.tgz",
+ "integrity": "sha512-vIUQPuwbVYdz/CYnlTLsJrRy7iXHQjdEe5wz0XhhdTym3IInM/zZLlPf9nZ2mThsH0QcsieCOWs2vOeCy/22LQ==",
+ "dev": true,
+ "requires": {
+ "ignore": "^3.0.11",
+ "minimatch": "^3.0.2",
+ "object-assign": "^4.0.1",
+ "resolve": "^1.1.7",
+ "semver": "5.3.0"
+ }
+ },
+ "eslint-plugin-promise": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.5.0.tgz",
+ "integrity": "sha1-ePu2/+BHIBYnVp6FpsU3OvKmj8o=",
+ "dev": true
+ },
+ "eslint-plugin-react": {
+ "version": "6.10.3",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-6.10.3.tgz",
+ "integrity": "sha1-xUNb6wZ3ThLH2y9qut3L+QDNP3g=",
+ "dev": true,
+ "requires": {
+ "array.prototype.find": "^2.0.1",
+ "doctrine": "^1.2.2",
+ "has": "^1.0.1",
+ "jsx-ast-utils": "^1.3.4",
+ "object.assign": "^4.0.4"
+ },
+ "dependencies": {
+ "doctrine": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
+ "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "isarray": "^1.0.0"
+ }
+ }
+ }
+ },
+ "eslint-plugin-standard": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz",
+ "integrity": "sha1-NNDJFbRe3G8BA5PH7vOCOwhWXPI=",
+ "dev": true
+ },
+ "espree": {
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.1.tgz",
+ "integrity": "sha1-DJiLirRttTEAoZVK5LqZXd0n2H4=",
+ "dev": true,
+ "requires": {
+ "acorn": "^5.1.1",
+ "acorn-jsx": "^3.0.0"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz",
+ "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==",
+ "dev": true
+ }
+ }
+ },
+ "esprima": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz",
+ "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=",
+ "dev": true
+ },
+ "esquery": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz",
+ "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=",
+ "dev": true,
+ "requires": {
+ "estraverse": "^4.0.0"
+ }
+ },
+ "esrecurse": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz",
+ "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=",
+ "dev": true,
+ "requires": {
+ "estraverse": "^4.1.0",
+ "object-assign": "^4.0.1"
+ }
+ },
+ "estraverse": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
+ "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
+ "dev": true
+ },
+ "esutils": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
+ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
+ "dev": true
+ },
+ "event-emitter": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
+ "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=",
+ "dev": true,
+ "requires": {
+ "d": "1",
+ "es5-ext": "~0.10.14"
+ }
+ },
+ "events": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
+ "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=",
+ "dev": true
+ },
+ "evp_bytestokey": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
+ "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
+ "dev": true,
+ "requires": {
+ "md5.js": "^1.3.4",
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "exit-hook": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz",
+ "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=",
+ "dev": true
+ },
+ "extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+ "dev": true
+ },
+ "extsprintf": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
+ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
+ "dev": true
+ },
+ "fast-deep-equal": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
+ "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=",
+ "dev": true
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
+ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
+ "dev": true
+ },
+ "fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
+ "dev": true
+ },
+ "figures": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
+ "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "^1.0.5",
+ "object-assign": "^4.1.0"
+ }
+ },
+ "file-entry-cache": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz",
+ "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=",
+ "dev": true,
+ "requires": {
+ "flat-cache": "^1.2.1",
+ "object-assign": "^4.0.1"
+ }
+ },
+ "find-root": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
+ "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==",
+ "dev": true
+ },
+ "find-up": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+ "dev": true,
+ "requires": {
+ "path-exists": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "flat-cache": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz",
+ "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=",
+ "dev": true,
+ "requires": {
+ "circular-json": "^0.3.1",
+ "del": "^2.0.2",
+ "graceful-fs": "^4.1.2",
+ "write": "^0.2.1"
+ }
+ },
+ "for-each": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.2.tgz",
+ "integrity": "sha1-LEBFC5NI6X8oEyJZO6lnBLmr1NQ=",
+ "dev": true,
+ "requires": {
+ "is-function": "~1.0.0"
+ }
+ },
+ "foreach": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz",
+ "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=",
+ "dev": true
+ },
+ "forever-agent": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
+ "dev": true
+ },
+ "form-data": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz",
+ "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=",
+ "dev": true,
+ "requires": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "1.0.6",
+ "mime-types": "^2.1.12"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+ "dev": true
+ },
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "dev": true
+ },
+ "generate-function": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz",
+ "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==",
+ "dev": true,
+ "requires": {
+ "is-property": "^1.0.2"
+ }
+ },
+ "generate-object-property": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
+ "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=",
+ "dev": true,
+ "requires": {
+ "is-property": "^1.0.0"
+ }
+ },
+ "get-stdin": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz",
+ "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=",
+ "dev": true
+ },
+ "getpass": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "^1.0.0"
+ }
+ },
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "globals": {
+ "version": "9.18.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
+ "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
+ "dev": true
+ },
+ "globby": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz",
+ "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=",
+ "dev": true,
+ "requires": {
+ "array-union": "^1.0.1",
+ "arrify": "^1.0.0",
+ "glob": "^7.0.3",
+ "object-assign": "^4.0.1",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "graceful-fs": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+ "dev": true
+ },
+ "har-schema": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
+ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
+ "dev": true
+ },
+ "har-validator": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
+ "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
+ "dev": true,
+ "requires": {
+ "ajv": "^5.1.0",
+ "har-schema": "^2.0.0"
+ }
+ },
+ "has": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz",
+ "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.0.2"
+ }
+ },
+ "has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "hash-base": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz",
+ "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1"
+ }
+ },
+ "hash.js": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz",
+ "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "minimalistic-assert": "^1.0.0"
+ }
+ },
+ "hawk": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz",
+ "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==",
+ "dev": true,
+ "requires": {
+ "boom": "4.x.x",
+ "cryptiles": "3.x.x",
+ "hoek": "4.x.x",
+ "sntp": "2.x.x"
+ }
+ },
+ "hmac-drbg": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
+ "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
+ "dev": true,
+ "requires": {
+ "hash.js": "^1.0.3",
+ "minimalistic-assert": "^1.0.0",
+ "minimalistic-crypto-utils": "^1.0.1"
+ }
+ },
+ "hoek": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz",
+ "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==",
+ "dev": true
+ },
+ "html-encoding-sniffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz",
+ "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==",
+ "dev": true,
+ "requires": {
+ "whatwg-encoding": "^1.0.1"
+ }
+ },
+ "htmlescape": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz",
+ "integrity": "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=",
+ "dev": true
+ },
+ "http-signature": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
+ "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "^1.0.0",
+ "jsprim": "^1.2.2",
+ "sshpk": "^1.7.0"
+ }
+ },
+ "https-browserify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
+ "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
+ "dev": true
+ },
+ "iconv-lite": {
+ "version": "0.4.19",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
+ "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==",
+ "dev": true
+ },
+ "ieee754": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz",
+ "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=",
+ "dev": true
+ },
+ "ignore": {
+ "version": "3.3.7",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz",
+ "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==",
+ "dev": true
+ },
+ "imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+ "dev": true
+ },
+ "indexof": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
+ "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=",
+ "dev": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "dev": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ },
+ "inline-source-map": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz",
+ "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=",
+ "dev": true,
+ "requires": {
+ "source-map": "~0.5.3"
+ }
+ },
+ "inquirer": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz",
+ "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=",
+ "dev": true,
+ "requires": {
+ "ansi-escapes": "^1.1.0",
+ "ansi-regex": "^2.0.0",
+ "chalk": "^1.0.0",
+ "cli-cursor": "^1.0.1",
+ "cli-width": "^2.0.0",
+ "figures": "^1.3.5",
+ "lodash": "^4.3.0",
+ "readline2": "^1.0.1",
+ "run-async": "^0.1.0",
+ "rx-lite": "^3.1.2",
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.0",
+ "through": "^2.3.6"
+ }
+ },
+ "insert-module-globals": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.0.1.tgz",
+ "integrity": "sha1-wDv04BywhtW15azorQr+eInWOMM=",
+ "dev": true,
+ "requires": {
+ "JSONStream": "^1.0.3",
+ "combine-source-map": "~0.7.1",
+ "concat-stream": "~1.5.1",
+ "is-buffer": "^1.1.0",
+ "lexical-scope": "^1.2.0",
+ "process": "~0.11.0",
+ "through2": "^2.0.0",
+ "xtend": "^4.0.0"
+ },
+ "dependencies": {
+ "concat-stream": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz",
+ "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=",
+ "dev": true,
+ "requires": {
+ "inherits": "~2.0.1",
+ "readable-stream": "~2.0.0",
+ "typedarray": "~0.0.5"
+ }
+ },
+ "readable-stream": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
+ "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~1.0.6",
+ "string_decoder": "~0.10.x",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ }
+ }
+ },
+ "interpret": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.4.tgz",
+ "integrity": "sha1-ggzdWIuGj/sZGoCVBtbJyPISsbA=",
+ "dev": true
+ },
+ "is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+ "dev": true
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "is-callable": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz",
+ "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=",
+ "dev": true
+ },
+ "is-date-object": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
+ "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "is-function": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.1.tgz",
+ "integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU=",
+ "dev": true
+ },
+ "is-my-ip-valid": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz",
+ "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==",
+ "dev": true
+ },
+ "is-my-json-valid": {
+ "version": "2.20.0",
+ "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.20.0.tgz",
+ "integrity": "sha512-XTHBZSIIxNsIsZXg7XB5l8z/OBFosl1Wao4tXLpeC7eKU4Vm/kdop2azkPqULwnfGQjmeDIyey9g7afMMtdWAA==",
+ "dev": true,
+ "requires": {
+ "generate-function": "^2.0.0",
+ "generate-object-property": "^1.1.0",
+ "is-my-ip-valid": "^1.0.0",
+ "jsonpointer": "^4.0.0",
+ "xtend": "^4.0.0"
+ }
+ },
+ "is-path-cwd": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
+ "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=",
+ "dev": true
+ },
+ "is-path-in-cwd": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz",
+ "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=",
+ "dev": true,
+ "requires": {
+ "is-path-inside": "^1.0.0"
+ }
+ },
+ "is-path-inside": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz",
+ "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=",
+ "dev": true,
+ "requires": {
+ "path-is-inside": "^1.0.1"
+ }
+ },
+ "is-property": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
+ "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=",
+ "dev": true
+ },
+ "is-regex": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
+ "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
+ "dev": true,
+ "requires": {
+ "has": "^1.0.1"
+ }
+ },
+ "is-resolvable": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz",
+ "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=",
+ "dev": true,
+ "requires": {
+ "tryit": "^1.0.1"
+ }
+ },
+ "is-symbol": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz",
+ "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=",
+ "dev": true
+ },
+ "is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
+ "dev": true
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "isstream": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
+ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
+ "dev": true
+ },
+ "js-tokens": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
+ "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
+ "dev": true
+ },
+ "js-yaml": {
+ "version": "3.13.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
+ "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
+ "dev": true,
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "dependencies": {
+ "esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true
+ }
+ }
+ },
+ "jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
+ "dev": true,
+ "optional": true
+ },
+ "jsdom": {
+ "version": "11.5.1",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.5.1.tgz",
+ "integrity": "sha512-89ztIZ03aYK9f1uUrLXLsZndRge/JnZjzjpaN+lrse3coqz+8PR/dX4WLHpbF5fIKTXhDjFODOJw2328lPJ90g==",
+ "dev": true,
+ "requires": {
+ "abab": "^1.0.3",
+ "acorn": "^5.1.2",
+ "acorn-globals": "^4.0.0",
+ "array-equal": "^1.0.0",
+ "browser-process-hrtime": "^0.1.2",
+ "content-type-parser": "^1.0.1",
+ "cssom": ">= 0.3.2 < 0.4.0",
+ "cssstyle": ">= 0.2.37 < 0.3.0",
+ "domexception": "^1.0.0",
+ "escodegen": "^1.9.0",
+ "html-encoding-sniffer": "^1.0.1",
+ "left-pad": "^1.2.0",
+ "nwmatcher": "^1.4.3",
+ "parse5": "^3.0.2",
+ "pn": "^1.0.0",
+ "request": "^2.83.0",
+ "request-promise-native": "^1.0.3",
+ "sax": "^1.2.1",
+ "symbol-tree": "^3.2.1",
+ "tough-cookie": "^2.3.3",
+ "webidl-conversions": "^4.0.2",
+ "whatwg-encoding": "^1.0.1",
+ "whatwg-url": "^6.3.0",
+ "xml-name-validator": "^2.0.1"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz",
+ "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==",
+ "dev": true
+ }
+ }
+ },
+ "json-schema": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
+ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
+ "dev": true
+ },
+ "json-schema-traverse": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
+ "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
+ "dev": true
+ },
+ "json-stable-stringify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
+ "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
+ "dev": true,
+ "requires": {
+ "jsonify": "~0.0.0"
+ }
+ },
+ "json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
+ "dev": true
+ },
+ "jsonify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
+ "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
+ "dev": true
+ },
+ "jsonparse": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
+ "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=",
+ "dev": true
+ },
+ "jsonpointer": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz",
+ "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=",
+ "dev": true
+ },
+ "jsprim": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
+ "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "1.0.0",
+ "extsprintf": "1.3.0",
+ "json-schema": "0.2.3",
+ "verror": "1.10.0"
+ }
+ },
+ "jsx-ast-utils": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz",
+ "integrity": "sha1-OGchPo3Xm/Ho8jAMDPwe+xgsDfE=",
+ "dev": true
+ },
+ "labeled-stream-splicer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.0.tgz",
+ "integrity": "sha1-pS4dE4AkwAuGscDJH2d5GLiuClk=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "isarray": "~0.0.1",
+ "stream-splicer": "^2.0.0"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ }
+ }
+ },
+ "left-pad": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.2.0.tgz",
+ "integrity": "sha1-0wpzxrggHY99jnlWupYWCHpo4O4=",
+ "dev": true
+ },
+ "levn": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2"
+ }
+ },
+ "lexical-scope": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/lexical-scope/-/lexical-scope-1.2.0.tgz",
+ "integrity": "sha1-/Ope3HBKSzqHls3KQZw6CvryLfQ=",
+ "dev": true,
+ "requires": {
+ "astw": "^2.0.0"
+ }
+ },
+ "load-json-file": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
+ "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^2.2.0",
+ "pify": "^2.0.0",
+ "strip-bom": "^3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "dev": true,
+ "requires": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ },
+ "dependencies": {
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ }
+ }
+ },
+ "lodash": {
+ "version": "4.17.15",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
+ "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
+ "dev": true
+ },
+ "lodash.cond": {
+ "version": "4.5.2",
+ "resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz",
+ "integrity": "sha1-9HGh2khr5g9quVXRcRVSPdHSVdU=",
+ "dev": true
+ },
+ "lodash.memoize": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz",
+ "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=",
+ "dev": true
+ },
+ "lodash.sortby": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
+ "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=",
+ "dev": true
+ },
+ "md5.js": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz",
+ "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=",
+ "dev": true,
+ "requires": {
+ "hash-base": "^3.0.0",
+ "inherits": "^2.0.1"
+ },
+ "dependencies": {
+ "hash-base": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
+ "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ }
+ }
+ },
+ "miller-rabin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
+ "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.0.0",
+ "brorand": "^1.0.1"
+ }
+ },
+ "mime-db": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
+ "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==",
+ "dev": true
+ },
+ "mime-types": {
+ "version": "2.1.18",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
+ "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
+ "dev": true,
+ "requires": {
+ "mime-db": "~1.33.0"
+ }
+ },
+ "minimalistic-assert": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz",
+ "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=",
+ "dev": true
+ },
+ "minimalistic-crypto-utils": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
+ "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+ "dev": true
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "dev": true,
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ },
+ "module-deps": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-4.1.1.tgz",
+ "integrity": "sha1-IyFYM/HaE/1gbMuAh7RIUty4If0=",
+ "dev": true,
+ "requires": {
+ "JSONStream": "^1.0.3",
+ "browser-resolve": "^1.7.0",
+ "cached-path-relative": "^1.0.0",
+ "concat-stream": "~1.5.0",
+ "defined": "^1.0.0",
+ "detective": "^4.0.0",
+ "duplexer2": "^0.1.2",
+ "inherits": "^2.0.1",
+ "parents": "^1.0.0",
+ "readable-stream": "^2.0.2",
+ "resolve": "^1.1.3",
+ "stream-combiner2": "^1.1.1",
+ "subarg": "^1.0.0",
+ "through2": "^2.0.0",
+ "xtend": "^4.0.0"
+ },
+ "dependencies": {
+ "concat-stream": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz",
+ "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=",
+ "dev": true,
+ "requires": {
+ "inherits": "~2.0.1",
+ "readable-stream": "~2.0.0",
+ "typedarray": "~0.0.5"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
+ "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~1.0.6",
+ "string_decoder": "~0.10.x",
+ "util-deprecate": "~1.0.1"
+ }
+ }
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ }
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ },
+ "mute-stream": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz",
+ "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=",
+ "dev": true
+ },
+ "natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
+ "dev": true
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+ "dev": true
+ },
+ "nwmatcher": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.3.tgz",
+ "integrity": "sha512-IKdSTiDWCarf2JTS5e9e2+5tPZGdkRJ79XjYV0pzK8Q9BpsFyBq1RGKxzs7Q8UBushGw7m6TzVKz6fcY99iSWw==",
+ "dev": true
+ },
+ "oauth-sign": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
+ "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=",
+ "dev": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+ "dev": true
+ },
+ "object-inspect": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.3.0.tgz",
+ "integrity": "sha512-OHHnLgLNXpM++GnJRyyhbr2bwl3pPVm4YvaraHrRvDt/N3r+s/gDVHciA7EJBTkijKXj61ssgSAikq1fb0IBRg==",
+ "dev": true
+ },
+ "object-keys": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz",
+ "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=",
+ "dev": true
+ },
+ "object.assign": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.0.4.tgz",
+ "integrity": "sha1-scnMBE7xuf5jYG/BQau7MuFHMMw=",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.2",
+ "function-bind": "^1.1.0",
+ "object-keys": "^1.0.10"
+ }
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "dev": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "onetime": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz",
+ "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=",
+ "dev": true
+ },
+ "optionator": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
+ "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
+ "dev": true,
+ "requires": {
+ "deep-is": "~0.1.3",
+ "fast-levenshtein": "~2.0.4",
+ "levn": "~0.3.0",
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2",
+ "wordwrap": "~1.0.0"
+ }
+ },
+ "os-browserify": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
+ "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
+ "dev": true
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
+ "dev": true
+ },
+ "p-limit": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz",
+ "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=",
+ "dev": true
+ },
+ "p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "dev": true,
+ "requires": {
+ "p-limit": "^1.1.0"
+ }
+ },
+ "pako": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz",
+ "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==",
+ "dev": true
+ },
+ "parents": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz",
+ "integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=",
+ "dev": true,
+ "requires": {
+ "path-platform": "~0.11.15"
+ }
+ },
+ "parse-asn1": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz",
+ "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=",
+ "dev": true,
+ "requires": {
+ "asn1.js": "^4.0.0",
+ "browserify-aes": "^1.0.0",
+ "create-hash": "^1.1.0",
+ "evp_bytestokey": "^1.0.0",
+ "pbkdf2": "^3.0.3"
+ }
+ },
+ "parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.2.0"
+ }
+ },
+ "parse5": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz",
+ "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "path-browserify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz",
+ "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=",
+ "dev": true
+ },
+ "path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+ "dev": true,
+ "requires": {
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+ "dev": true
+ },
+ "path-is-inside": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
+ "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
+ "dev": true
+ },
+ "path-parse": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz",
+ "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=",
+ "dev": true
+ },
+ "path-platform": {
+ "version": "0.11.15",
+ "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz",
+ "integrity": "sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=",
+ "dev": true
+ },
+ "pbkdf2": {
+ "version": "3.0.14",
+ "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz",
+ "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==",
+ "dev": true,
+ "requires": {
+ "create-hash": "^1.1.2",
+ "create-hmac": "^1.1.4",
+ "ripemd160": "^2.0.1",
+ "safe-buffer": "^5.0.1",
+ "sha.js": "^2.4.8"
+ }
+ },
+ "performance-now": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
+ "dev": true
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ },
+ "pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+ "dev": true
+ },
+ "pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+ "dev": true,
+ "requires": {
+ "pinkie": "^2.0.0"
+ }
+ },
+ "pkg-conf": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.0.0.tgz",
+ "integrity": "sha1-BxyHZQQDvM+5xif1h1G/5HwGcnk=",
+ "dev": true,
+ "requires": {
+ "find-up": "^2.0.0",
+ "load-json-file": "^2.0.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "dev": true,
+ "requires": {
+ "locate-path": "^2.0.0"
+ }
+ }
+ }
+ },
+ "pkg-config": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/pkg-config/-/pkg-config-1.1.1.tgz",
+ "integrity": "sha1-VX7yLXPaPIg3EHdmxS6tq94pj+Q=",
+ "dev": true,
+ "requires": {
+ "debug-log": "^1.0.0",
+ "find-root": "^1.0.0",
+ "xtend": "^4.0.1"
+ }
+ },
+ "pkg-dir": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz",
+ "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=",
+ "dev": true,
+ "requires": {
+ "find-up": "^1.0.0"
+ }
+ },
+ "pkg-up": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-1.0.0.tgz",
+ "integrity": "sha1-Pgj7RhUlxEIWJKM7n35tCvWwWiY=",
+ "dev": true,
+ "requires": {
+ "find-up": "^1.0.0"
+ }
+ },
+ "pluralize": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz",
+ "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=",
+ "dev": true
+ },
+ "pn": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/pn/-/pn-1.0.0.tgz",
+ "integrity": "sha1-HPWjCw2AbNGPiPxBprXUrWFbO6k=",
+ "dev": true
+ },
+ "prelude-ls": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
+ "dev": true
+ },
+ "process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
+ "dev": true
+ },
+ "process-nextick-args": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
+ "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
+ "dev": true
+ },
+ "progress": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz",
+ "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=",
+ "dev": true
+ },
+ "public-encrypt": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz",
+ "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "browserify-rsa": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "parse-asn1": "^5.0.0",
+ "randombytes": "^2.0.1"
+ }
+ },
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+ "dev": true
+ },
+ "qs": {
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
+ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
+ "dev": true
+ },
+ "querystring": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
+ "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
+ "dev": true
+ },
+ "querystring-es3": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
+ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
+ "dev": true
+ },
+ "randombytes": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz",
+ "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "read-only-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz",
+ "integrity": "sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "^2.0.2"
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
+ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~1.0.6",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.0.3",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "readline2": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz",
+ "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=",
+ "dev": true,
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "mute-stream": "0.0.5"
+ }
+ },
+ "rechoir": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
+ "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
+ "dev": true,
+ "requires": {
+ "resolve": "^1.1.6"
+ }
+ },
+ "request": {
+ "version": "2.85.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.85.0.tgz",
+ "integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==",
+ "dev": true,
+ "requires": {
+ "aws-sign2": "~0.7.0",
+ "aws4": "^1.6.0",
+ "caseless": "~0.12.0",
+ "combined-stream": "~1.0.5",
+ "extend": "~3.0.1",
+ "forever-agent": "~0.6.1",
+ "form-data": "~2.3.1",
+ "har-validator": "~5.0.3",
+ "hawk": "~6.0.2",
+ "http-signature": "~1.2.0",
+ "is-typedarray": "~1.0.0",
+ "isstream": "~0.1.2",
+ "json-stringify-safe": "~5.0.1",
+ "mime-types": "~2.1.17",
+ "oauth-sign": "~0.8.2",
+ "performance-now": "^2.1.0",
+ "qs": "~6.5.1",
+ "safe-buffer": "^5.1.1",
+ "stringstream": "~0.0.5",
+ "tough-cookie": "~2.3.3",
+ "tunnel-agent": "^0.6.0",
+ "uuid": "^3.1.0"
+ }
+ },
+ "request-promise-core": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz",
+ "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.13.1"
+ }
+ },
+ "request-promise-native": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.5.tgz",
+ "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=",
+ "dev": true,
+ "requires": {
+ "request-promise-core": "1.1.1",
+ "stealthy-require": "^1.1.0",
+ "tough-cookie": ">=2.3.3"
+ }
+ },
+ "require-uncached": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz",
+ "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=",
+ "dev": true,
+ "requires": {
+ "caller-path": "^0.1.0",
+ "resolve-from": "^1.0.0"
+ }
+ },
+ "resolve": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz",
+ "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==",
+ "dev": true,
+ "requires": {
+ "path-parse": "^1.0.5"
+ }
+ },
+ "resolve-from": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz",
+ "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=",
+ "dev": true
+ },
+ "restore-cursor": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz",
+ "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=",
+ "dev": true,
+ "requires": {
+ "exit-hook": "^1.0.0",
+ "onetime": "^1.0.0"
+ }
+ },
+ "resumer": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz",
+ "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=",
+ "dev": true,
+ "requires": {
+ "through": "~2.3.4"
+ }
+ },
+ "rimraf": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
+ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.0.5"
+ }
+ },
+ "ripemd160": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz",
+ "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=",
+ "dev": true,
+ "requires": {
+ "hash-base": "^2.0.0",
+ "inherits": "^2.0.1"
+ }
+ },
+ "rollup": {
+ "version": "0.50.0",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.50.0.tgz",
+ "integrity": "sha512-7RqCBQ9iwsOBPkjYgoIaeUij606mSkDMExP0NT7QDI3bqkHYQHrQ83uoNIXwPcQm/vP2VbsUz3kiyZZ1qPlLTQ==",
+ "dev": true
+ },
+ "run-async": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz",
+ "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=",
+ "dev": true,
+ "requires": {
+ "once": "^1.3.0"
+ }
+ },
+ "run-parallel": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.6.tgz",
+ "integrity": "sha1-KQA8miFj4B4tLfyQV18sbB1hoDk=",
+ "dev": true
+ },
+ "rx-lite": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz",
+ "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=",
+ "dev": true
+ },
+ "safe-buffer": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
+ "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
+ "dev": true
+ },
+ "sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
+ "dev": true
+ },
+ "semver": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
+ "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
+ "dev": true
+ },
+ "sha.js": {
+ "version": "2.4.9",
+ "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.9.tgz",
+ "integrity": "sha512-G8zektVqbiPHrylgew9Zg1VRB1L/DtXNUVAM6q4QLy8NE3qtHlFXTf8VLL4k1Yl6c7NMjtZUTdXV+X44nFaT6A==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "shasum": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz",
+ "integrity": "sha1-5wEjENj0F/TetXEhUOVni4euVl8=",
+ "dev": true,
+ "requires": {
+ "json-stable-stringify": "~0.0.0",
+ "sha.js": "~2.4.4"
+ },
+ "dependencies": {
+ "json-stable-stringify": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz",
+ "integrity": "sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=",
+ "dev": true,
+ "requires": {
+ "jsonify": "~0.0.0"
+ }
+ }
+ }
+ },
+ "shell-quote": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz",
+ "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=",
+ "dev": true,
+ "requires": {
+ "array-filter": "~0.0.0",
+ "array-map": "~0.0.0",
+ "array-reduce": "~0.0.0",
+ "jsonify": "~0.0.0"
+ }
+ },
+ "shelljs": {
+ "version": "0.7.8",
+ "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz",
+ "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=",
+ "dev": true,
+ "requires": {
+ "glob": "^7.0.0",
+ "interpret": "^1.0.0",
+ "rechoir": "^0.6.2"
+ }
+ },
+ "slice-ansi": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz",
+ "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=",
+ "dev": true
+ },
+ "sntp": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz",
+ "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==",
+ "dev": true,
+ "requires": {
+ "hoek": "4.x.x"
+ }
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ },
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+ "dev": true
+ },
+ "sshpk": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz",
+ "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=",
+ "dev": true,
+ "requires": {
+ "asn1": "~0.2.3",
+ "assert-plus": "^1.0.0",
+ "bcrypt-pbkdf": "^1.0.0",
+ "dashdash": "^1.12.0",
+ "ecc-jsbn": "~0.1.1",
+ "getpass": "^0.1.1",
+ "jsbn": "~0.1.0",
+ "tweetnacl": "~0.14.0"
+ }
+ },
+ "standard": {
+ "version": "10.0.3",
+ "resolved": "https://registry.npmjs.org/standard/-/standard-10.0.3.tgz",
+ "integrity": "sha512-JURZ+85ExKLQULckDFijdX5WHzN6RC7fgiZNSV4jFQVo+3tPoQGHyBrGekye/yf0aOfb4210EM5qPNlc2cRh4w==",
+ "dev": true,
+ "requires": {
+ "eslint": "~3.19.0",
+ "eslint-config-standard": "10.2.1",
+ "eslint-config-standard-jsx": "4.0.2",
+ "eslint-plugin-import": "~2.2.0",
+ "eslint-plugin-node": "~4.2.2",
+ "eslint-plugin-promise": "~3.5.0",
+ "eslint-plugin-react": "~6.10.0",
+ "eslint-plugin-standard": "~3.0.1",
+ "standard-engine": "~7.0.0"
+ }
+ },
+ "standard-engine": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-7.0.0.tgz",
+ "integrity": "sha1-67d7nI/CyBZf+jU72Rug3/Qa9pA=",
+ "dev": true,
+ "requires": {
+ "deglob": "^2.1.0",
+ "get-stdin": "^5.0.1",
+ "minimist": "^1.1.0",
+ "pkg-conf": "^2.0.0"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "dev": true
+ }
+ }
+ },
+ "stealthy-require": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz",
+ "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=",
+ "dev": true
+ },
+ "stream-browserify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz",
+ "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=",
+ "dev": true,
+ "requires": {
+ "inherits": "~2.0.1",
+ "readable-stream": "^2.0.2"
+ }
+ },
+ "stream-combiner2": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz",
+ "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=",
+ "dev": true,
+ "requires": {
+ "duplexer2": "~0.1.0",
+ "readable-stream": "^2.0.2"
+ }
+ },
+ "stream-http": {
+ "version": "2.7.2",
+ "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz",
+ "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==",
+ "dev": true,
+ "requires": {
+ "builtin-status-codes": "^3.0.0",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.2.6",
+ "to-arraybuffer": "^1.0.0",
+ "xtend": "^4.0.0"
+ }
+ },
+ "stream-splicer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.0.tgz",
+ "integrity": "sha1-G2O+Q4oTPktnHMGTUZdgAXWRDYM=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.2"
+ }
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "dev": true,
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ },
+ "string.prototype.trim": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz",
+ "integrity": "sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.2",
+ "es-abstract": "^1.5.0",
+ "function-bind": "^1.0.2"
+ }
+ },
+ "string_decoder": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
+ "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "stringstream": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz",
+ "integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+ "dev": true
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
+ "dev": true
+ },
+ "subarg": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz",
+ "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=",
+ "dev": true,
+ "requires": {
+ "minimist": "^1.1.0"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "dev": true
+ }
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ },
+ "symbol-tree": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz",
+ "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=",
+ "dev": true
+ },
+ "syntax-error": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.3.0.tgz",
+ "integrity": "sha1-HtkmbE1AvnXcVb+bsct3Biu5bKE=",
+ "dev": true,
+ "requires": {
+ "acorn": "^4.0.3"
+ }
+ },
+ "table": {
+ "version": "3.8.3",
+ "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz",
+ "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=",
+ "dev": true,
+ "requires": {
+ "ajv": "^4.7.0",
+ "ajv-keywords": "^1.0.0",
+ "chalk": "^1.1.1",
+ "lodash": "^4.0.0",
+ "slice-ansi": "0.0.4",
+ "string-width": "^2.0.0"
+ },
+ "dependencies": {
+ "ajv": {
+ "version": "4.11.8",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
+ "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=",
+ "dev": true,
+ "requires": {
+ "co": "^4.6.0",
+ "json-stable-stringify": "^1.0.1"
+ }
+ },
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "tape": {
+ "version": "4.8.0",
+ "resolved": "https://registry.npmjs.org/tape/-/tape-4.8.0.tgz",
+ "integrity": "sha512-TWILfEnvO7I8mFe35d98F6T5fbLaEtbFTG/lxWvid8qDfFTxt19EBijWmB4j3+Hoh5TfHE2faWs73ua+EphuBA==",
+ "dev": true,
+ "requires": {
+ "deep-equal": "~1.0.1",
+ "defined": "~1.0.0",
+ "for-each": "~0.3.2",
+ "function-bind": "~1.1.0",
+ "glob": "~7.1.2",
+ "has": "~1.0.1",
+ "inherits": "~2.0.3",
+ "minimist": "~1.2.0",
+ "object-inspect": "~1.3.0",
+ "resolve": "~1.4.0",
+ "resumer": "~0.0.0",
+ "string.prototype.trim": "~1.1.2",
+ "through": "~2.3.8"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "dev": true
+ },
+ "resolve": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.4.0.tgz",
+ "integrity": "sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q==",
+ "dev": true,
+ "requires": {
+ "path-parse": "^1.0.5"
+ }
+ }
+ }
+ },
+ "text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
+ "dev": true
+ },
+ "through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
+ "dev": true
+ },
+ "through2": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
+ "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "^2.1.5",
+ "xtend": "~4.0.1"
+ }
+ },
+ "timers-browserify": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz",
+ "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=",
+ "dev": true,
+ "requires": {
+ "process": "~0.11.0"
+ }
+ },
+ "to-arraybuffer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
+ "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
+ "dev": true
+ },
+ "tough-cookie": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz",
+ "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=",
+ "dev": true,
+ "requires": {
+ "punycode": "^1.4.1"
+ }
+ },
+ "tr46": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
+ "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=",
+ "dev": true,
+ "requires": {
+ "punycode": "^2.1.0"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz",
+ "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=",
+ "dev": true
+ }
+ }
+ },
+ "tryit": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz",
+ "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=",
+ "dev": true
+ },
+ "tty-browserify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
+ "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
+ "dev": true
+ },
+ "tunnel-agent": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "turndown": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/turndown/-/turndown-4.0.1.tgz",
+ "integrity": "sha512-xC83XzYm+yLuQWLBc87s63FLn4+ERdZOxDqlrlvKKWcyL9UFhwtR4hAqmFBKDUQyejRZWU9Fac4vMHomlFboyg==",
+ "dev": true,
+ "requires": {
+ "jsdom": "^11.3.0"
+ }
+ },
+ "turndown-attendant": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/turndown-attendant/-/turndown-attendant-0.0.2.tgz",
+ "integrity": "sha512-XDR7VqqimA2IaNpTU6nVDTFU/EUWnzfHlFm9lRDyKkwmtKNLEoRLt2rPvK4JAgtlfO/Q8malHexhpFTyH3wq9Q==",
+ "dev": true,
+ "requires": {
+ "jsdom": "^11.3.0",
+ "tape": "^4.8.0"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz",
+ "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==",
+ "dev": true
+ },
+ "acorn-globals": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.1.0.tgz",
+ "integrity": "sha512-KjZwU26uG3u6eZcfGbTULzFcsoz6pegNKtHPksZPOUsiKo5bUmiBPa38FuHZ/Eun+XYh/JCCkS9AS3Lu4McQOQ==",
+ "dev": true,
+ "requires": {
+ "acorn": "^5.0.0"
+ }
+ },
+ "jsdom": {
+ "version": "11.3.0",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.3.0.tgz",
+ "integrity": "sha512-aPZTDl4MplzQhx5bLztk6nzjbEslmO3Q3+z0WpCMutL1XJDhZIRzir6R1Y8S84LgeT/7jhQvgtUMkY6oPwvlUw==",
+ "dev": true,
+ "requires": {
+ "abab": "^1.0.3",
+ "acorn": "^5.1.2",
+ "acorn-globals": "^4.0.0",
+ "array-equal": "^1.0.0",
+ "content-type-parser": "^1.0.1",
+ "cssom": ">= 0.3.2 < 0.4.0",
+ "cssstyle": ">= 0.2.37 < 0.3.0",
+ "domexception": "^1.0.0",
+ "escodegen": "^1.9.0",
+ "html-encoding-sniffer": "^1.0.1",
+ "nwmatcher": "^1.4.1",
+ "parse5": "^3.0.2",
+ "pn": "^1.0.0",
+ "request": "^2.83.0",
+ "request-promise-native": "^1.0.3",
+ "sax": "^1.2.1",
+ "symbol-tree": "^3.2.1",
+ "tough-cookie": "^2.3.3",
+ "webidl-conversions": "^4.0.2",
+ "whatwg-encoding": "^1.0.1",
+ "whatwg-url": "^6.3.0",
+ "xml-name-validator": "^2.0.1"
+ }
+ },
+ "parse5": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz",
+ "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "punycode": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz",
+ "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=",
+ "dev": true
+ },
+ "tr46": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
+ "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=",
+ "dev": true,
+ "requires": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "whatwg-url": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.3.0.tgz",
+ "integrity": "sha512-rM+hE5iYKGPAOu05mIdJR47pYSR2vDzfrTEFRc/S8D3L60yW8BuXmUJ7Kog7x/DrokFN7JNaHKadpzjouKRRAw==",
+ "dev": true,
+ "requires": {
+ "lodash.sortby": "^4.7.0",
+ "tr46": "^1.0.0",
+ "webidl-conversions": "^4.0.1"
+ }
+ }
+ }
+ },
+ "tweetnacl": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
+ "dev": true,
+ "optional": true
+ },
+ "type-check": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "~1.1.2"
+ }
+ },
+ "typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+ "dev": true
+ },
+ "umd": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.1.tgz",
+ "integrity": "sha1-iuVW4RAR9jwllnCKiDclnwGz1g4=",
+ "dev": true
+ },
+ "uniq": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
+ "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=",
+ "dev": true
+ },
+ "url": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
+ "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
+ "dev": true,
+ "requires": {
+ "punycode": "1.3.2",
+ "querystring": "0.2.0"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
+ "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
+ "dev": true
+ }
+ }
+ },
+ "user-home": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz",
+ "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=",
+ "dev": true,
+ "requires": {
+ "os-homedir": "^1.0.0"
+ }
+ },
+ "util": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
+ "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.1"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
+ "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
+ "dev": true
+ }
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+ "dev": true
+ },
+ "uuid": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz",
+ "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==",
+ "dev": true
+ },
+ "verror": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
+ "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "^1.0.0",
+ "core-util-is": "1.0.2",
+ "extsprintf": "^1.2.0"
+ }
+ },
+ "vm-browserify": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz",
+ "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=",
+ "dev": true,
+ "requires": {
+ "indexof": "0.0.1"
+ }
+ },
+ "webidl-conversions": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
+ "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
+ "dev": true
+ },
+ "whatwg-encoding": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz",
+ "integrity": "sha512-jLBwwKUhi8WtBfsMQlL4bUUcT8sMkAtQinscJAe/M4KHCkHuUJAF6vuB0tueNIw4c8ziO6AkRmgY+jL3a0iiPw==",
+ "dev": true,
+ "requires": {
+ "iconv-lite": "0.4.19"
+ }
+ },
+ "whatwg-url": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.4.0.tgz",
+ "integrity": "sha512-Z0CVh/YE217Foyb488eo+iBv+r7eAQ0wSTyApi9n06jhcA3z6Nidg/EGvl0UFkg7kMdKxfBzzr+o9JF+cevgMg==",
+ "dev": true,
+ "requires": {
+ "lodash.sortby": "^4.7.0",
+ "tr46": "^1.0.0",
+ "webidl-conversions": "^4.0.1"
+ }
+ },
+ "wordwrap": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+ "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
+ "dev": true
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "dev": true
+ },
+ "write": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz",
+ "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=",
+ "dev": true,
+ "requires": {
+ "mkdirp": "^0.5.1"
+ }
+ },
+ "xml-name-validator": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz",
+ "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=",
+ "dev": true
+ },
+ "xtend": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
+ "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
+ "dev": true
+ }
+ }
+}
diff --git a/packages/turndown-plugin-gfm/package.json b/packages/turndown-plugin-gfm/package.json
new file mode 100644
index 000000000..758485d6c
--- /dev/null
+++ b/packages/turndown-plugin-gfm/package.json
@@ -0,0 +1,45 @@
+{
+ "name": "@joplin/turndown-plugin-gfm",
+ "description": "Turndown plugin to add GitHub Flavored Markdown extensions.",
+ "publishConfig": {
+ "access": "public"
+ },
+ "version": "1.0.61",
+ "author": "Dom Christie",
+ "main": "lib/turndown-plugin-gfm.cjs.js",
+ "devDependencies": {
+ "browserify": "14.5.0",
+ "rollup": "0.50.1",
+ "standard": "17.1.0",
+ "turndown": "7.2.0",
+ "turndown-attendant": "0.0.3"
+ },
+ "files": [
+ "lib",
+ "dist"
+ ],
+ "keywords": [
+ "turndown",
+ "turndown-plugin",
+ "html-to-markdown",
+ "html",
+ "markdown",
+ "github-flavored-markdown",
+ "gfm"
+ ],
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/laurent22/joplin-turndown-plugin-gfm.git"
+ },
+ "scripts": {
+ "build-all": "npm run build-cjs && npm run build-es && npm run build-iife",
+ "build": "rollup -c config/rollup.config.cjs.js",
+ "build-cjs": "rollup -c config/rollup.config.cjs.js && rollup -c config/rollup.config.browser.cjs.js",
+ "build-es": "rollup -c config/rollup.config.es.js && rollup -c config/rollup.config.browser.es.js",
+ "build-iife": "rollup -c config/rollup.config.iife.js",
+ "build-test": "browserify test/turndown-plugin-gfm-test.js --outfile test/turndown-plugin-gfm-test.browser.js",
+ "prepare": "npm run build"
+ },
+ "gitHead": "05a29b450962bf05a8642bbd39446a1f679a96ba"
+}
diff --git a/packages/turndown-plugin-gfm/publish.sh b/packages/turndown-plugin-gfm/publish.sh
new file mode 100644
index 000000000..b6b7faee6
--- /dev/null
+++ b/packages/turndown-plugin-gfm/publish.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+npm version patch
+npm publish
\ No newline at end of file
diff --git a/packages/turndown-plugin-gfm/src/gfm.js b/packages/turndown-plugin-gfm/src/gfm.js
new file mode 100644
index 000000000..826b50659
--- /dev/null
+++ b/packages/turndown-plugin-gfm/src/gfm.js
@@ -0,0 +1,15 @@
+import highlightedCodeBlock from './highlighted-code-block.js'
+import strikethrough from './strikethrough.js'
+import tables from './tables.js'
+import taskListItems from './task-list-items.js'
+
+function gfm (turndownService) {
+ turndownService.use([
+ highlightedCodeBlock,
+ strikethrough,
+ tables,
+ taskListItems
+ ])
+}
+
+export { gfm, highlightedCodeBlock, strikethrough, tables, taskListItems }
diff --git a/packages/turndown-plugin-gfm/src/highlighted-code-block.js b/packages/turndown-plugin-gfm/src/highlighted-code-block.js
new file mode 100644
index 000000000..97052de57
--- /dev/null
+++ b/packages/turndown-plugin-gfm/src/highlighted-code-block.js
@@ -0,0 +1,25 @@
+var highlightRegExp = /highlight-(?:text|source)-([a-z0-9]+)/
+
+export default function highlightedCodeBlock (turndownService) {
+ turndownService.addRule('highlightedCodeBlock', {
+ filter: function (node) {
+ var firstChild = node.firstChild
+ return (
+ node.nodeName === 'DIV' &&
+ highlightRegExp.test(node.className) &&
+ firstChild &&
+ firstChild.nodeName === 'PRE'
+ )
+ },
+ replacement: function (content, node, options) {
+ var className = node.className || ''
+ var language = (className.match(highlightRegExp) || [null, ''])[1]
+
+ return (
+ '\n\n' + options.fence + language + '\n' +
+ node.firstChild.textContent +
+ '\n' + options.fence + '\n\n'
+ )
+ }
+ })
+}
diff --git a/packages/turndown-plugin-gfm/src/strikethrough.js b/packages/turndown-plugin-gfm/src/strikethrough.js
new file mode 100644
index 000000000..9dfb9d7bb
--- /dev/null
+++ b/packages/turndown-plugin-gfm/src/strikethrough.js
@@ -0,0 +1,8 @@
+export default function strikethrough (turndownService) {
+ turndownService.addRule('strikethrough', {
+ filter: ['del', 's', 'strike'],
+ replacement: function (content) {
+ return '~~' + content + '~~'
+ }
+ })
+}
diff --git a/packages/turndown-plugin-gfm/src/tables.js b/packages/turndown-plugin-gfm/src/tables.js
new file mode 100644
index 000000000..263ab259d
--- /dev/null
+++ b/packages/turndown-plugin-gfm/src/tables.js
@@ -0,0 +1,286 @@
+var indexOf = Array.prototype.indexOf
+var every = Array.prototype.every
+var rules = {}
+var alignMap = { left: ':---', right: '---:', center: ':---:' };
+
+let isCodeBlock_ = null;
+let options_ = null;
+
+// We need to cache the result of tableShouldBeSkipped() as it is expensive.
+// Caching it means we went from about 9000 ms for rendering down to 90 ms.
+// Fixes https://github.com/laurent22/joplin/issues/6736
+const tableShouldBeSkippedCache_ = new WeakMap();
+
+function getAlignment(node) {
+ return node ? (node.getAttribute('align') || node.style.textAlign || '').toLowerCase() : '';
+}
+
+function getBorder(alignment) {
+ return alignment ? alignMap[alignment] : '---';
+}
+
+function getColumnAlignment(table, columnIndex) {
+ var votes = {
+ left: 0,
+ right: 0,
+ center: 0,
+ '': 0,
+ };
+
+ var align = '';
+
+ for (var i = 0; i < table.rows.length; ++i) {
+ var row = table.rows[i];
+ if (columnIndex < row.childNodes.length) {
+ var cellAlignment = getAlignment(row.childNodes[columnIndex]);
+ ++votes[cellAlignment];
+
+ if (votes[cellAlignment] > votes[align]) {
+ align = cellAlignment;
+ }
+ }
+ }
+
+ return align;
+}
+
+rules.tableCell = {
+ filter: ['th', 'td'],
+ replacement: function (content, node) {
+ if (tableShouldBeSkipped(nodeParentTable(node))) return content;
+ return cell(content, node)
+ }
+}
+
+rules.tableRow = {
+ filter: 'tr',
+ replacement: function (content, node) {
+ const parentTable = nodeParentTable(node);
+ if (tableShouldBeSkipped(parentTable)) return content;
+
+ var borderCells = ''
+
+ if (isHeadingRow(node)) {
+ const colCount = tableColCount(parentTable);
+ for (var i = 0; i < colCount; i++) {
+ const childNode = i < node.childNodes.length ? node.childNodes[i] : null;
+ var border = getBorder(getColumnAlignment(parentTable, i));
+ borderCells += cell(border, childNode, i);
+ }
+ }
+ return '\n' + content + (borderCells ? '\n' + borderCells : '')
+ }
+}
+
+rules.table = {
+ filter: function (node, options) {
+ return node.nodeName === 'TABLE';
+ },
+
+ replacement: function (content, node) {
+ // Only convert tables that can result in valid Markdown
+ // Other tables are kept as HTML using `keep` (see below).
+ if (tableShouldBeHtml(node, options_)) {
+ return node.outerHTML;
+ } else {
+ if (tableShouldBeSkipped(node)) return content;
+
+ // Ensure there are no blank lines
+ content = content.replace(/\n+/g, '\n')
+
+ // If table has no heading, add an empty one so as to get a valid Markdown table
+ var secondLine = content.trim().split('\n');
+ if (secondLine.length >= 2) secondLine = secondLine[1]
+ var secondLineIsDivider = /\| :?---/.test(secondLine);
+
+ var columnCount = tableColCount(node);
+ var emptyHeader = ''
+ if (columnCount && !secondLineIsDivider) {
+ emptyHeader = '|' + ' |'.repeat(columnCount) + '\n' + '|'
+ for (var columnIndex = 0; columnIndex < columnCount; ++columnIndex) {
+ emptyHeader += ' ' + getBorder(getColumnAlignment(node, columnIndex)) + ' |';
+ }
+ }
+
+ const captionContent = node.caption ? node.caption.textContent || '' : '';
+ const caption = captionContent ? `${captionContent}\n\n` : '';
+ const tableContent = `${emptyHeader}${content}`.trimStart();
+ return `\n\n${caption}${tableContent}\n\n`;
+ }
+ }
+}
+
+rules.tableCaption = {
+ filter: ['caption'],
+ replacement: () => '',
+};
+
+rules.tableColgroup = {
+ filter: ['colgroup', 'col'],
+ replacement: () => '',
+};
+
+rules.tableSection = {
+ filter: ['thead', 'tbody', 'tfoot'],
+ replacement: function (content) {
+ return content
+ }
+}
+
+// A tr is a heading row if:
+// - the parent is a THEAD
+// - or if its the first child of the TABLE or the first TBODY (possibly
+// following a blank THEAD)
+// - and every cell is a TH
+function isHeadingRow (tr) {
+ var parentNode = tr.parentNode
+ return (
+ parentNode.nodeName === 'THEAD' ||
+ (
+ parentNode.firstChild === tr &&
+ (parentNode.nodeName === 'TABLE' || isFirstTbody(parentNode)) &&
+ every.call(tr.childNodes, function (n) { return n.nodeName === 'TH' })
+ )
+ )
+}
+
+function isFirstTbody (element) {
+ var previousSibling = element.previousSibling
+ return (
+ element.nodeName === 'TBODY' && (
+ !previousSibling ||
+ (
+ previousSibling.nodeName === 'THEAD' &&
+ /^\s*$/i.test(previousSibling.textContent)
+ )
+ )
+ )
+}
+
+function cell (content, node = null, index = null) {
+ if (index === null) index = indexOf.call(node.parentNode.childNodes, node)
+ var prefix = ' '
+ if (index === 0) prefix = '| '
+ let filteredContent = content.trim().replace(/\n\r/g, ' ').replace(/\n/g, " ");
+ filteredContent = filteredContent.replace(/\|+/g, '\\|')
+ while (filteredContent.length < 3) filteredContent += ' ';
+ if (node) filteredContent = handleColSpan(filteredContent, node, ' ');
+ return prefix + filteredContent + ' |'
+}
+
+function nodeContainsTable(node) {
+ if (!node.childNodes) return false;
+
+ for (let i = 0; i < node.childNodes.length; i++) {
+ const child = node.childNodes[i];
+ if (child.nodeName === 'TABLE') return true;
+ if (nodeContainsTable(child)) return true;
+ }
+ return false;
+}
+
+const nodeContains = (node, types) => {
+ if (!node.childNodes) return false;
+
+ for (let i = 0; i < node.childNodes.length; i++) {
+ const child = node.childNodes[i];
+ if (types === 'code' && isCodeBlock_ && isCodeBlock_(child)) return true;
+ if (types.includes(child.nodeName)) return true;
+ if (nodeContains(child, types)) return true;
+ }
+
+ return false;
+}
+
+const tableShouldBeHtml = (tableNode, options) => {
+ const possibleTags = [
+ 'UL',
+ 'OL',
+ 'H1',
+ 'H2',
+ 'H3',
+ 'H4',
+ 'H5',
+ 'H6',
+ 'HR',
+ 'BLOCKQUOTE',
+ 'PRE'
+ ];
+
+ // In general we should leave as HTML tables that include other tables. The
+ // exception is with the Web Clipper when we import a web page with a layout
+ // that's made of HTML tables. In that case we have this logic of removing the
+ // outer table and keeping only the inner ones. For the Rich Text editor
+ // however we always want to keep nested tables.
+ if (options.preserveNestedTables) possibleTags.push('TABLE');
+
+ return nodeContains(tableNode, 'code') ||
+ nodeContains(tableNode, possibleTags);
+}
+
+// Various conditions under which a table should be skipped - i.e. each cell
+// will be rendered one after the other as if they were paragraphs.
+function tableShouldBeSkipped(tableNode) {
+ const cached = tableShouldBeSkippedCache_.get(tableNode);
+ if (cached !== undefined) return cached;
+
+ const result = tableShouldBeSkipped_(tableNode);
+
+ tableShouldBeSkippedCache_.set(tableNode, result);
+ return result;
+}
+
+function tableShouldBeSkipped_(tableNode) {
+ if (!tableNode) return true;
+ if (!tableNode.rows) return true;
+ if (tableNode.rows.length === 1 && tableNode.rows[0].childNodes.length <= 1) return true; // Table with only one cell
+ if (nodeContainsTable(tableNode)) return true;
+ return false;
+}
+
+function nodeParentDiv(node) {
+ let parent = node.parentNode;
+ while (parent.nodeName !== 'DIV') {
+ parent = parent.parentNode;
+ if (!parent) return null;
+ }
+ return parent;
+}
+
+function nodeParentTable(node) {
+ let parent = node.parentNode;
+ while (parent.nodeName !== 'TABLE') {
+ parent = parent.parentNode;
+ if (!parent) return null;
+ }
+ return parent;
+}
+
+function handleColSpan(content, node, emptyChar) {
+ const colspan = node.getAttribute('colspan') || 1;
+ for (let i = 1; i < colspan; i++) {
+ content += ' | ' + emptyChar.repeat(3);
+ }
+ return content
+}
+
+function tableColCount(node) {
+ let maxColCount = 0;
+ for (let i = 0; i < node.rows.length; i++) {
+ const row = node.rows[i]
+ const colCount = row.childNodes.length
+ if (colCount > maxColCount) maxColCount = colCount
+ }
+ return maxColCount
+}
+
+export default function tables (turndownService) {
+ isCodeBlock_ = turndownService.isCodeBlock;
+ options_ = turndownService.options;
+
+ turndownService.keep(function (node) {
+ if (node.nodeName === 'TABLE' && tableShouldBeHtml(node, turndownService.options)) return true;
+ return false;
+ });
+ for (var key in rules) turndownService.addRule(key, rules[key])
+}
diff --git a/packages/turndown-plugin-gfm/src/task-list-items.js b/packages/turndown-plugin-gfm/src/task-list-items.js
new file mode 100644
index 000000000..55d4b853b
--- /dev/null
+++ b/packages/turndown-plugin-gfm/src/task-list-items.js
@@ -0,0 +1,10 @@
+export default function taskListItems (turndownService) {
+ turndownService.addRule('taskListItems', {
+ filter: function (node) {
+ return node.type === 'checkbox' && node.parentNode.nodeName === 'LI'
+ },
+ replacement: function (content, node) {
+ return (node.checked ? '[x]' : '[ ]') + ' '
+ }
+ })
+}
diff --git a/packages/turndown-plugin-gfm/test/index.html b/packages/turndown-plugin-gfm/test/index.html
new file mode 100644
index 000000000..8e731181d
--- /dev/null
+++ b/packages/turndown-plugin-gfm/test/index.html
@@ -0,0 +1,323 @@
+
+
+
+
+ turndown test runner
+
+
+
+
+
+
+
+
Lorem ipsum
+
~Lorem ipsum~
+
+
+
+
Lorem ipsum
+
~Lorem ipsum~
+
+
+
+
Lorem ipsum
+
~Lorem ipsum~
+
+
+
+
+
+
+
+
+
| Column 1 | Column 2 |
+| --- | --- |
+| Row 1, Column 1 | Row 1, Column 2 |
+| Row 2, Column 1 | Row 2, Column 2 |
+
+
+
+
+
| Column 1 | Column 2 | Column 3 | Column 4 |
+| :-- | :-: | --: | --- |
+| Row 1, Column 1 | Row 1, Column 2 | Row 1, Column 3 | Row 1, Column 4 |
+| Row 2, Column 1 | Row 2, Column 2 | Row 2, Column 3 | Row 2, Column 4 |
+
+
+
+
+
| Column 1 | Column 2 | Column 3 | Column 4 |
+| :-- | :-: | --: | --- |
+| | Row 1, Column 2 | Row 1, Column 3 | Row 1, Column 4 |
+| Row 2, Column 1 | | Row 2, Column 3 | Row 2, Column 4 |
+| Row 3, Column 1 | Row 3, Column 2 | | Row 3, Column 4 |
+| Row 4, Column 1 | Row 4, Column 2 | Row 4, Column 3 | |
+| | | | Row 5, Column 4 |
+
+
+
+
+
| Heading 1 | Heading 2 |
+| --- | --- |
+| Row 1 | Row 1 |
+| Row 3 | Row 3 |
+
+
+
+
+
| Heading |
+| --- |
+| Content |
+
+
+
+
+
| Heading |
+| --- |
+| Content |
+
+
+
+
+
| Heading |
+| --- |
+| Content |
+| Heading |
+| Content |
+
+
+
+
+
| Heading |
+| --- |
+| Cell |
+
+
+
+
+
| Heading |
+| --- |
+
+
+
+
+
| | |
+| --- | --- |
+| Row 1 Cell 1 | Row 1 Cell 2 |
+| Row 2 Cell 1 | Row 2 Cell 2 |
+
+
+
+
+
| | |
+| --- | --- |
+| Heading | Not a heading |
+| Heading | Not a heading |
+
+
+
+
+
```html
+<p>Hello world</p>
+```
+
+
+
+
+
```js
+;(function () {})()
+```
+
+
+
+
+
+
+
diff --git a/packages/turndown-plugin-gfm/test/turndown-plugin-gfm-test.js b/packages/turndown-plugin-gfm/test/turndown-plugin-gfm-test.js
new file mode 100644
index 000000000..414dc6460
--- /dev/null
+++ b/packages/turndown-plugin-gfm/test/turndown-plugin-gfm-test.js
@@ -0,0 +1,13 @@
+const Attendant = require('turndown-attendant');
+const TurndownService = require('turndown');
+const gfm = require('../lib/turndown-plugin-gfm.cjs').gfm;
+
+const attendant = new Attendant({
+ file: `${__dirname}/index.html`,
+ TurndownService: TurndownService,
+ beforeEach: function(turndownService) {
+ turndownService.use(gfm);
+ },
+});
+
+attendant.run();
diff --git a/src/public/app/components/app_context.ts b/src/public/app/components/app_context.ts
index c6e0b63a6..a5bd34c00 100644
--- a/src/public/app/components/app_context.ts
+++ b/src/public/app/components/app_context.ts
@@ -22,7 +22,6 @@ import type LoadResults from "../services/load_results.js";
import type { Attribute } from "../services/attribute_parser.js";
import type NoteTreeWidget from "../widgets/note_tree.js";
import type { default as NoteContext, GetTextEditorCallback } from "./note_context.js";
-import type { ContextMenuEvent } from "../menus/context_menu.js";
import type TypeWidget from "../widgets/type_widgets/type_widget.js";
import type EditableTextTypeWidget from "../widgets/type_widgets/editable_text.js";
import type FAttribute from "../entities/fattribute.js";
@@ -58,8 +57,8 @@ export interface ContextMenuCommandData extends CommandData {
}
export interface NoteCommandData extends CommandData {
- notePath?: string;
- hoistedNoteId?: string;
+ notePath?: string | null;
+ hoistedNoteId?: string | null;
viewScope?: ViewScope;
}
@@ -175,9 +174,9 @@ export type CommandMappings = {
callback: (value: NoteDetailWidget | PromiseLike) => void;
};
executeWithTextEditor: CommandData &
- ExecuteCommandData & {
- callback?: GetTextEditorCallback;
- };
+ ExecuteCommandData & {
+ callback?: GetTextEditorCallback;
+ };
executeWithCodeEditor: CommandData & ExecuteCommandData;
/**
* Called upon when attempting to retrieve the content element of a {@link NoteContext}.
@@ -298,16 +297,13 @@ type EventMappings = {
noteContext: NoteContext;
notePath?: string | null;
};
- noteSwitchedAndActivatedEvent: {
+ noteSwitchedAndActivated: {
noteContext: NoteContext;
notePath: string;
};
setNoteContext: {
noteContext: NoteContext;
};
- noteTypeMimeChangedEvent: {
- noteId: string;
- };
reEvaluateHighlightsListWidgetVisibility: {
noteId: string | undefined;
};
@@ -328,14 +324,14 @@ type EventMappings = {
noteId: string;
ntxId: string | null;
};
- contextsReopenedEvent: {
- mainNtxId: string;
+ contextsReopened: {
+ mainNtxId: string | null;
tabPosition: number;
};
noteDetailRefreshed: {
ntxId?: string | null;
};
- noteContextReorderEvent: {
+ noteContextReorder: {
oldMainNtxId: string;
newMainNtxId: string;
ntxIdsInOrder: string[];
@@ -343,7 +339,7 @@ type EventMappings = {
newNoteContextCreated: {
noteContext: NoteContext;
};
- noteContextRemovedEvent: {
+ noteContextRemoved: {
ntxIds: string[];
};
exportSvg: {
@@ -364,12 +360,17 @@ type EventMappings = {
relationMapResetPanZoom: { ntxId: string | null | undefined };
relationMapResetZoomIn: { ntxId: string | null | undefined };
relationMapResetZoomOut: { ntxId: string | null | undefined };
- activeNoteChangedEvent: {};
+ activeNoteChanged: {};
showAddLinkDialog: {
textTypeWidget: EditableTextTypeWidget;
text: string;
};
-
+ openBulkActionsDialog: {
+ selectedOrActiveNoteIds: string[];
+ };
+ cloneNoteIdsTo: {
+ noteIds: string[];
+ };
};
export type EventListener = {
diff --git a/src/public/app/components/entrypoints.ts b/src/public/app/components/entrypoints.ts
index d4c8b600e..0ad2c76ed 100644
--- a/src/public/app/components/entrypoints.ts
+++ b/src/public/app/components/entrypoints.ts
@@ -66,12 +66,13 @@ export default class Entrypoints extends Component {
}
async toggleNoteHoistingCommand({ noteId = appContext.tabManager.getActiveContextNoteId() }) {
- if (!noteId) {
+ const activeNoteContext = appContext.tabManager.getActiveContext();
+
+ if (!activeNoteContext || !noteId) {
return;
}
const noteToHoist = await froca.getNote(noteId);
- const activeNoteContext = appContext.tabManager.getActiveContext();
if (noteToHoist?.noteId === activeNoteContext.hoistedNoteId) {
await activeNoteContext.unhoist();
@@ -83,6 +84,11 @@ export default class Entrypoints extends Component {
async hoistNoteCommand({ noteId }: { noteId: string }) {
const noteContext = appContext.tabManager.getActiveContext();
+ if (!noteContext) {
+ logError("hoistNoteCommand: noteContext is null");
+ return;
+ }
+
if (noteContext.hoistedNoteId !== noteId) {
await noteContext.setHoistedNoteId(noteId);
}
@@ -174,7 +180,11 @@ export default class Entrypoints extends Component {
}
async runActiveNoteCommand() {
- const { ntxId, note } = appContext.tabManager.getActiveContext();
+ const noteContext = appContext.tabManager.getActiveContext();
+ if (!noteContext) {
+ return;
+ }
+ const { ntxId, note } = noteContext;
// ctrl+enter is also used elsewhere, so make sure we're running only when appropriate
if (!note || note.type !== "code") {
diff --git a/src/public/app/components/main_tree_executors.ts b/src/public/app/components/main_tree_executors.ts
index 78251d67c..b5473ffe4 100644
--- a/src/public/app/components/main_tree_executors.ts
+++ b/src/public/app/components/main_tree_executors.ts
@@ -1,4 +1,4 @@
-import appContext from "./app_context.js";
+import appContext, { type EventData } from "./app_context.js";
import noteCreateService from "../services/note_create.js";
import treeService from "../services/tree.js";
import hoistedNoteService from "../services/hoisted_note.js";
@@ -14,23 +14,19 @@ export default class MainTreeExecutors extends Component {
return appContext.noteTreeWidget;
}
- async cloneNotesToCommand() {
+ async cloneNotesToCommand({ selectedOrActiveNoteIds }: EventData<"cloneNotesTo">) {
if (!this.tree) {
return;
}
- const selectedOrActiveNoteIds = this.tree.getSelectedOrActiveNodes().map((node) => node.data.noteId);
-
this.triggerCommand("cloneNoteIdsTo", { noteIds: selectedOrActiveNoteIds });
}
- async moveNotesToCommand() {
+ async moveNotesToCommand({ selectedOrActiveBranchIds }: EventData<"moveNotesTo">) {
if (!this.tree) {
return;
}
- const selectedOrActiveBranchIds = this.tree.getSelectedOrActiveNodes().map((node) => node.data.branchId);
-
this.triggerCommand("moveBranchIdsTo", { branchIds: selectedOrActiveBranchIds });
}
diff --git a/src/public/app/components/tab_manager.js b/src/public/app/components/tab_manager.ts
similarity index 73%
rename from src/public/app/components/tab_manager.js
rename to src/public/app/components/tab_manager.ts
index 46a0f9d96..a4d00a075 100644
--- a/src/public/app/components/tab_manager.js
+++ b/src/public/app/components/tab_manager.ts
@@ -4,23 +4,40 @@ import server from "../services/server.js";
import options from "../services/options.js";
import froca from "../services/froca.js";
import treeService from "../services/tree.js";
-import utils from "../services/utils.js";
import NoteContext from "./note_context.js";
import appContext from "./app_context.js";
import Mutex from "../utils/mutex.js";
import linkService from "../services/link.js";
+import type { EventData } from "./app_context.js";
+import type FNote from "../entities/fnote.js";
+
+interface TabState {
+ contexts: NoteContext[];
+ position: number;
+}
+
+interface NoteContextState {
+ ntxId: string;
+ mainNtxId: string | null;
+ notePath: string | null;
+ hoistedNoteId: string;
+ active: boolean;
+ viewScope: Record;
+}
export default class TabManager extends Component {
+ public children: NoteContext[];
+ public mutex: Mutex;
+ public activeNtxId: string | null;
+ public recentlyClosedTabs: TabState[];
+ public tabsUpdate: SpacedUpdate;
+
constructor() {
super();
- /** @property {NoteContext[]} */
this.children = [];
this.mutex = new Mutex();
-
this.activeNtxId = null;
-
- // elements are arrays of {contexts, position}, storing note contexts for each tab (one main context + subcontexts [splits]), and the original position of the tab
this.recentlyClosedTabs = [];
this.tabsUpdate = new SpacedUpdate(async () => {
@@ -28,7 +45,9 @@ export default class TabManager extends Component {
return;
}
- const openNoteContexts = this.noteContexts.map((nc) => nc.getPojoState()).filter((t) => !!t);
+ const openNoteContexts = this.noteContexts
+ .map((nc) => nc.getPojoState())
+ .filter((t) => !!t);
await server.put("options", {
openNoteContexts: JSON.stringify(openNoteContexts)
@@ -38,13 +57,11 @@ export default class TabManager extends Component {
appContext.addBeforeUnloadListener(this);
}
- /** @returns {NoteContext[]} */
- get noteContexts() {
+ get noteContexts(): NoteContext[] {
return this.children;
}
- /** @type {NoteContext[]} */
- get mainNoteContexts() {
+ get mainNoteContexts(): NoteContext[] {
return this.noteContexts.filter((nc) => !nc.mainNtxId);
}
@@ -53,11 +70,12 @@ export default class TabManager extends Component {
const noteContextsToOpen = (appContext.isMainWindow && options.getJson("openNoteContexts")) || [];
// preload all notes at once
- await froca.getNotes([...noteContextsToOpen.flatMap((tab) => [treeService.getNoteIdFromUrl(tab.notePath), tab.hoistedNoteId])], true);
+ await froca.getNotes([...noteContextsToOpen.flatMap((tab: NoteContextState) =>
+ [treeService.getNoteIdFromUrl(tab.notePath), tab.hoistedNoteId])], true);
- const filteredNoteContexts = noteContextsToOpen.filter((openTab) => {
+ const filteredNoteContexts = noteContextsToOpen.filter((openTab: NoteContextState) => {
const noteId = treeService.getNoteIdFromUrl(openTab.notePath);
- if (!(noteId in froca.notes)) {
+ if (noteId && !(noteId in froca.notes)) {
// note doesn't exist so don't try to open tab for it
return false;
}
@@ -82,7 +100,7 @@ export default class TabManager extends Component {
hoistedNoteId: parsedFromUrl.hoistedNoteId || "root",
viewScope: parsedFromUrl.viewScope || {}
});
- } else if (!filteredNoteContexts.find((tab) => tab.active)) {
+ } else if (!filteredNoteContexts.find((tab: NoteContextState) => tab.active)) {
filteredNoteContexts[0].active = true;
}
@@ -101,21 +119,30 @@ export default class TabManager extends Component {
// if there's a notePath in the URL, make sure it's open and active
// (useful, for e.g., opening clipped notes from clipper or opening link in an extra window)
if (parsedFromUrl.notePath) {
- await appContext.tabManager.switchToNoteContext(parsedFromUrl.ntxId, parsedFromUrl.notePath, parsedFromUrl.viewScope, parsedFromUrl.hoistedNoteId);
+ await appContext.tabManager.switchToNoteContext(
+ parsedFromUrl.ntxId,
+ parsedFromUrl.notePath,
+ parsedFromUrl.viewScope,
+ parsedFromUrl.hoistedNoteId
+ );
} else if (parsedFromUrl.searchString) {
await appContext.triggerCommand("searchNotes", {
searchString: parsedFromUrl.searchString
});
}
- } catch (e) {
- logError(`Loading note contexts '${options.get("openNoteContexts")}' failed: ${e.message} ${e.stack}`);
+ } catch (e: unknown) {
+ if (e instanceof Error) {
+ logError(`Loading note contexts '${options.get("openNoteContexts")}' failed: ${e.message} ${e.stack}`);
+ } else {
+ logError(`Loading note contexts '${options.get("openNoteContexts")}' failed: ${String(e)}`);
+ }
// try to recover
await this.openEmptyTab();
}
}
- noteSwitchedEvent({ noteContext }) {
+ noteSwitchedEvent({ noteContext }: EventData<"noteSwitched">) {
if (noteContext.isActive()) {
this.setCurrentNavigationStateToHash();
}
@@ -135,10 +162,10 @@ export default class TabManager extends Component {
const activeNoteContext = this.getActiveContext();
this.updateDocumentTitle(activeNoteContext);
- this.triggerEvent("activeNoteChanged"); // trigger this even in on popstate event
+ this.triggerEvent("activeNoteChanged", {}); // trigger this even in on popstate event
}
- calculateHash() {
+ calculateHash(): string {
const activeNoteContext = this.getActiveContext();
if (!activeNoteContext) {
return "";
@@ -152,21 +179,15 @@ export default class TabManager extends Component {
});
}
- /** @returns {NoteContext[]} */
- getNoteContexts() {
+ getNoteContexts(): NoteContext[] {
return this.noteContexts;
}
- /**
- * Main context is essentially a tab (children are splits), so this returns tabs.
- * @returns {NoteContext[]}
- */
- getMainNoteContexts() {
+ getMainNoteContexts(): NoteContext[] {
return this.noteContexts.filter((nc) => nc.isMainContext());
}
- /** @returns {NoteContext} */
- getNoteContextById(ntxId) {
+ getNoteContextById(ntxId: string | null): NoteContext {
const noteContext = this.noteContexts.find((nc) => nc.ntxId === ntxId);
if (!noteContext) {
@@ -176,58 +197,47 @@ export default class TabManager extends Component {
return noteContext;
}
- /**
- * Get active context which represents the visible split with focus. Active context can, but doesn't have to be "main".
- *
- * @returns {NoteContext}
- */
- getActiveContext() {
+ getActiveContext(): NoteContext | null {
return this.activeNtxId ? this.getNoteContextById(this.activeNtxId) : null;
}
- /**
- * Get active main context which corresponds to the active tab.
- *
- * @returns {NoteContext}
- */
- getActiveMainContext() {
+ getActiveMainContext(): NoteContext | null {
return this.activeNtxId ? this.getNoteContextById(this.activeNtxId).getMainContext() : null;
}
- /** @returns {string|null} */
- getActiveContextNotePath() {
+ getActiveContextNotePath(): string | null {
const activeContext = this.getActiveContext();
- return activeContext ? activeContext.notePath : null;
+ return activeContext?.notePath ?? null;
}
- /** @returns {FNote} */
- getActiveContextNote() {
+ getActiveContextNote(): FNote | null {
const activeContext = this.getActiveContext();
return activeContext ? activeContext.note : null;
}
- /** @returns {string|null} */
- getActiveContextNoteId() {
+ getActiveContextNoteId(): string | null {
const activeNote = this.getActiveContextNote();
-
return activeNote ? activeNote.noteId : null;
}
- /** @returns {string|null} */
- getActiveContextNoteType() {
+ getActiveContextNoteType(): string | null {
const activeNote = this.getActiveContextNote();
-
return activeNote ? activeNote.type : null;
}
- /** @returns {string|null} */
- getActiveContextNoteMime() {
- const activeNote = this.getActiveContextNote();
+ getActiveContextNoteMime(): string | null {
+ const activeNote = this.getActiveContextNote();
return activeNote ? activeNote.mime : null;
}
- async switchToNoteContext(ntxId, notePath, viewScope = {}, hoistedNoteId = null) {
- const noteContext = this.noteContexts.find((nc) => nc.ntxId === ntxId) || (await this.openEmptyTab());
+ async switchToNoteContext(
+ ntxId: string | null,
+ notePath: string,
+ viewScope: Record = {},
+ hoistedNoteId: string | null = null
+ ) {
+ const noteContext = this.noteContexts.find((nc) => nc.ntxId === ntxId) ||
+ await this.openEmptyTab();
await this.activateNoteContext(noteContext.ntxId);
@@ -242,20 +252,21 @@ export default class TabManager extends Component {
async openAndActivateEmptyTab() {
const noteContext = await this.openEmptyTab();
-
await this.activateNoteContext(noteContext.ntxId);
-
- await noteContext.setEmpty();
+ noteContext.setEmpty();
}
- async openEmptyTab(ntxId = null, hoistedNoteId = "root", mainNtxId) {
+ async openEmptyTab(
+ ntxId: string | null = null,
+ hoistedNoteId: string = "root",
+ mainNtxId: string | null = null
+ ): Promise {
const noteContext = new NoteContext(ntxId, hoistedNoteId, mainNtxId);
const existingNoteContext = this.children.find((nc) => nc.ntxId === noteContext.ntxId);
if (existingNoteContext) {
await existingNoteContext.setHoistedNoteId(hoistedNoteId);
-
return existingNoteContext;
}
@@ -266,29 +277,37 @@ export default class TabManager extends Component {
return noteContext;
}
- async openInNewTab(targetNoteId, hoistedNoteId = null) {
- const noteContext = await this.openEmptyTab(null, hoistedNoteId || this.getActiveContext().hoistedNoteId);
+ async openInNewTab(targetNoteId: string, hoistedNoteId: string | null = null) {
+ const noteContext = await this.openEmptyTab(null, hoistedNoteId || this.getActiveContext()?.hoistedNoteId);
await noteContext.setNote(targetNoteId);
}
- async openInSameTab(targetNoteId, hoistedNoteId = null) {
+ async openInSameTab(targetNoteId: string, hoistedNoteId: string | null = null) {
const activeContext = this.getActiveContext();
+ if (!activeContext) return;
+
await activeContext.setHoistedNoteId(hoistedNoteId || activeContext.hoistedNoteId);
await activeContext.setNote(targetNoteId);
}
- /**
- * If the requested notePath is within current note hoisting scope then keep the note hoisting also for the new tab.
- */
- async openTabWithNoteWithHoisting(notePath, opts = {}) {
+ async openTabWithNoteWithHoisting(
+ notePath: string,
+ opts: {
+ activate?: boolean | null;
+ ntxId?: string | null;
+ mainNtxId?: string | null;
+ hoistedNoteId?: string | null;
+ viewScope?: Record | null;
+ } = {}
+ ): Promise {
const noteContext = this.getActiveContext();
let hoistedNoteId = "root";
if (noteContext) {
const resolvedNotePath = await treeService.resolveNotePath(notePath, noteContext.hoistedNoteId);
- if (resolvedNotePath.includes(noteContext.hoistedNoteId) || resolvedNotePath.includes("_hidden")) {
+ if (resolvedNotePath?.includes(noteContext.hoistedNoteId) || resolvedNotePath?.includes("_hidden")) {
hoistedNoteId = noteContext.hoistedNoteId;
}
}
@@ -298,7 +317,16 @@ export default class TabManager extends Component {
return this.openContextWithNote(notePath, opts);
}
- async openContextWithNote(notePath, opts = {}) {
+ async openContextWithNote(
+ notePath: string | null,
+ opts: {
+ activate?: boolean | null;
+ ntxId?: string | null;
+ mainNtxId?: string | null;
+ hoistedNoteId?: string | null;
+ viewScope?: Record | null;
+ } = {}
+ ): Promise {
const activate = !!opts.activate;
const ntxId = opts.ntxId || null;
const mainNtxId = opts.mainNtxId || null;
@@ -306,7 +334,6 @@ export default class TabManager extends Component {
const viewScope = opts.viewScope || { viewMode: "default" };
const noteContext = await this.openEmptyTab(ntxId, hoistedNoteId, mainNtxId);
-
if (notePath) {
await noteContext.setNote(notePath, {
// if activate is false, then send normal noteSwitched event
@@ -315,7 +342,7 @@ export default class TabManager extends Component {
});
}
- if (activate) {
+ if (activate && noteContext.notePath) {
this.activateNoteContext(noteContext.ntxId, false);
await this.triggerEvent("noteSwitchedAndActivated", {
@@ -327,21 +354,24 @@ export default class TabManager extends Component {
return noteContext;
}
- async activateOrOpenNote(noteId) {
+ async activateOrOpenNote(noteId: string) {
for (const noteContext of this.getNoteContexts()) {
if (noteContext.note && noteContext.note.noteId === noteId) {
this.activateNoteContext(noteContext.ntxId);
-
return;
}
}
// if no tab with this note has been found we'll create new tab
-
await this.openContextWithNote(noteId, { activate: true });
}
- async activateNoteContext(ntxId, triggerEvent = true) {
+ async activateNoteContext(ntxId: string | null, triggerEvent: boolean = true) {
+ if (!ntxId) {
+ logError("activateNoteContext: ntxId is null");
+ return;
+ }
+
if (ntxId === this.activeNtxId) {
return;
}
@@ -359,14 +389,10 @@ export default class TabManager extends Component {
this.setCurrentNavigationStateToHash();
}
- /**
- * @param ntxId
- * @returns {Promise} true if note context has been removed, false otherwise
- */
- async removeNoteContext(ntxId) {
+ async removeNoteContext(ntxId: string | null): Promise {
// removing note context is an async process which can take some time, if users presses CTRL-W quickly, two
// close events could interleave which would then lead to attempting to activate already removed context.
- return await this.mutex.runExclusively(async () => {
+ return await this.mutex.runExclusively(async (): Promise => {
let noteContextToRemove;
try {
@@ -399,7 +425,7 @@ export default class TabManager extends Component {
const noteContextsToRemove = noteContextToRemove.getSubContexts();
const ntxIdsToRemove = noteContextsToRemove.map((nc) => nc.ntxId);
- await this.triggerEvent("beforeNoteContextRemove", { ntxIds: ntxIdsToRemove });
+ await this.triggerEvent("beforeNoteContextRemove", { ntxIds: ntxIdsToRemove.filter((id) => id !== null) });
if (!noteContextToRemove.isMainContext()) {
const siblings = noteContextToRemove.getMainContext().getSubContexts();
@@ -421,12 +447,11 @@ export default class TabManager extends Component {
}
this.removeNoteContexts(noteContextsToRemove);
-
return true;
});
}
- removeNoteContexts(noteContextsToRemove) {
+ removeNoteContexts(noteContextsToRemove: NoteContext[]) {
const ntxIdsToRemove = noteContextsToRemove.map((nc) => nc.ntxId);
const position = this.noteContexts.findIndex((nc) => ntxIdsToRemove.includes(nc.ntxId));
@@ -435,12 +460,12 @@ export default class TabManager extends Component {
this.addToRecentlyClosedTabs(noteContextsToRemove, position);
- this.triggerEvent("noteContextRemoved", { ntxIds: ntxIdsToRemove });
+ this.triggerEvent("noteContextRemoved", { ntxIds: ntxIdsToRemove.filter((id) => id !== null) });
this.tabsUpdate.scheduleUpdate();
}
- addToRecentlyClosedTabs(noteContexts, position) {
+ addToRecentlyClosedTabs(noteContexts: NoteContext[], position: number) {
if (noteContexts.length === 1 && noteContexts[0].isEmpty()) {
return;
}
@@ -448,26 +473,42 @@ export default class TabManager extends Component {
this.recentlyClosedTabs.push({ contexts: noteContexts, position: position });
}
- tabReorderEvent({ ntxIdsInOrder }) {
- const order = {};
+ tabReorderEvent({ ntxIdsInOrder }: { ntxIdsInOrder: string[] }) {
+ const order: Record = {};
let i = 0;
for (const ntxId of ntxIdsInOrder) {
for (const noteContext of this.getNoteContextById(ntxId).getSubContexts()) {
- order[noteContext.ntxId] = i++;
+ if (noteContext.ntxId) {
+ order[noteContext.ntxId] = i++;
+ }
}
}
- this.children.sort((a, b) => (order[a.ntxId] < order[b.ntxId] ? -1 : 1));
+ this.children.sort((a, b) => {
+ if (!a.ntxId || !b.ntxId) return 0;
+ return (order[a.ntxId] ?? 0) < (order[b.ntxId] ?? 0) ? -1 : 1;
+ });
this.tabsUpdate.scheduleUpdate();
}
- noteContextReorderEvent({ ntxIdsInOrder, oldMainNtxId, newMainNtxId }) {
+ noteContextReorderEvent({
+ ntxIdsInOrder,
+ oldMainNtxId,
+ newMainNtxId
+ }: {
+ ntxIdsInOrder: string[];
+ oldMainNtxId?: string;
+ newMainNtxId?: string;
+ }) {
const order = Object.fromEntries(ntxIdsInOrder.map((v, i) => [v, i]));
- this.children.sort((a, b) => (order[a.ntxId] < order[b.ntxId] ? -1 : 1));
+ this.children.sort((a, b) => {
+ if (!a.ntxId || !b.ntxId) return 0;
+ return (order[a.ntxId] ?? 0) < (order[b.ntxId] ?? 0) ? -1 : 1;
+ });
if (oldMainNtxId && newMainNtxId) {
this.children.forEach((c) => {
@@ -485,7 +526,8 @@ export default class TabManager extends Component {
}
async activateNextTabCommand() {
- const activeMainNtxId = this.getActiveMainContext().ntxId;
+ const activeMainNtxId = this.getActiveMainContext()?.ntxId;
+ if (!activeMainNtxId) return;
const oldIdx = this.mainNoteContexts.findIndex((nc) => nc.ntxId === activeMainNtxId);
const newActiveNtxId = this.mainNoteContexts[oldIdx === this.mainNoteContexts.length - 1 ? 0 : oldIdx + 1].ntxId;
@@ -494,7 +536,8 @@ export default class TabManager extends Component {
}
async activatePreviousTabCommand() {
- const activeMainNtxId = this.getActiveMainContext().ntxId;
+ const activeMainNtxId = this.getActiveMainContext()?.ntxId;
+ if (!activeMainNtxId) return;
const oldIdx = this.mainNoteContexts.findIndex((nc) => nc.ntxId === activeMainNtxId);
const newActiveNtxId = this.mainNoteContexts[oldIdx === 0 ? this.mainNoteContexts.length - 1 : oldIdx - 1].ntxId;
@@ -506,9 +549,8 @@ export default class TabManager extends Component {
await this.removeNoteContext(this.activeNtxId);
}
- beforeUnloadEvent() {
+ beforeUnloadEvent(): boolean {
this.tabsUpdate.updateNowIfNecessary();
-
return true; // don't block closing the tab, this metadata is not that important
}
@@ -522,7 +564,7 @@ export default class TabManager extends Component {
}
}
- async closeOtherTabsCommand({ ntxId }) {
+ async closeOtherTabsCommand({ ntxId }: { ntxId: string }) {
for (const ntxIdToRemove of this.mainNoteContexts.map((nc) => nc.ntxId)) {
if (ntxIdToRemove !== ntxId) {
await this.removeNoteContext(ntxIdToRemove);
@@ -530,7 +572,7 @@ export default class TabManager extends Component {
}
}
- async closeRightTabsCommand({ ntxId }) {
+ async closeRightTabsCommand({ ntxId }: { ntxId: string }) {
const ntxIds = this.mainNoteContexts.map((nc) => nc.ntxId);
const index = ntxIds.indexOf(ntxId);
@@ -542,11 +584,11 @@ export default class TabManager extends Component {
}
}
- async closeTabCommand({ ntxId }) {
+ async closeTabCommand({ ntxId }: { ntxId: string }) {
await this.removeNoteContext(ntxId);
}
- async moveTabToNewWindowCommand({ ntxId }) {
+ async moveTabToNewWindowCommand({ ntxId }: { ntxId: string }) {
const { notePath, hoistedNoteId } = this.getNoteContextById(ntxId);
const removed = await this.removeNoteContext(ntxId);
@@ -556,17 +598,16 @@ export default class TabManager extends Component {
}
}
- async copyTabToNewWindowCommand({ ntxId }) {
+ async copyTabToNewWindowCommand({ ntxId }: { ntxId: string }) {
const { notePath, hoistedNoteId } = this.getNoteContextById(ntxId);
this.triggerCommand("openInWindow", { notePath, hoistedNoteId });
}
async reopenLastTabCommand() {
- let closeLastEmptyTab = null;
-
- await this.mutex.runExclusively(async () => {
+ const closeLastEmptyTab: NoteContext | undefined = await this.mutex.runExclusively(async () => {
+ let closeLastEmptyTab
if (this.recentlyClosedTabs.length === 0) {
- return;
+ return closeLastEmptyTab;
}
if (this.noteContexts.length === 1 && this.noteContexts[0].isEmpty()) {
@@ -575,6 +616,8 @@ export default class TabManager extends Component {
}
const lastClosedTab = this.recentlyClosedTabs.pop();
+ if (!lastClosedTab) return closeLastEmptyTab;
+
const noteContexts = lastClosedTab.contexts;
for (const noteContext of noteContexts) {
@@ -589,7 +632,7 @@ export default class TabManager extends Component {
...this.noteContexts.slice(-noteContexts.length),
...this.noteContexts.slice(lastClosedTab.position, -noteContexts.length)
];
- await this.noteContextReorderEvent({ ntxIdsInOrder: ntxsInOrder.map((nc) => nc.ntxId) });
+ this.noteContextReorderEvent({ ntxIdsInOrder: ntxsInOrder.map((nc) => nc.ntxId).filter((id) => id !== null) });
let mainNtx = noteContexts.find((nc) => nc.isMainContext());
if (mainNtx) {
@@ -601,13 +644,14 @@ export default class TabManager extends Component {
} else {
// reopened a single split, need to reorder the pane widget in split note container
await this.triggerEvent("contextsReopened", {
- ntxId: ntxsInOrder[lastClosedTab.position].ntxId,
+ mainNtxId: ntxsInOrder[lastClosedTab.position].ntxId,
// this is safe since lastClosedTab.position can never be 0 in this case
- afterNtxId: ntxsInOrder[lastClosedTab.position - 1].ntxId
+ tabPosition: lastClosedTab.position - 1
});
}
const noteContextToActivate = noteContexts.length === 1 ? noteContexts[0] : noteContexts.find((nc) => nc.isMainContext());
+ if (!noteContextToActivate) return closeLastEmptyTab;
await this.activateNoteContext(noteContextToActivate.ntxId);
@@ -615,6 +659,7 @@ export default class TabManager extends Component {
noteContext: noteContextToActivate,
notePath: noteContextToActivate.notePath
});
+ return closeLastEmptyTab;
});
if (closeLastEmptyTab) {
@@ -626,7 +671,9 @@ export default class TabManager extends Component {
this.tabsUpdate.scheduleUpdate();
}
- async updateDocumentTitle(activeNoteContext) {
+ async updateDocumentTitle(activeNoteContext: NoteContext | null) {
+ if (!activeNoteContext) return;
+
const titleFragments = [
// it helps to navigate in history if note title is included in the title
await activeNoteContext.getNavigationTitle(),
@@ -636,7 +683,7 @@ export default class TabManager extends Component {
document.title = titleFragments.join(" - ");
}
- async entitiesReloadedEvent({ loadResults }) {
+ async entitiesReloadedEvent({ loadResults }: EventData<"entitiesReloaded">) {
const activeContext = this.getActiveContext();
if (activeContext && loadResults.isNoteReloaded(activeContext.noteId)) {
@@ -646,7 +693,6 @@ export default class TabManager extends Component {
async frocaReloadedEvent() {
const activeContext = this.getActiveContext();
-
if (activeContext) {
await this.updateDocumentTitle(activeContext);
}
diff --git a/src/public/app/doc_notes/en/User Guide/!!!meta.json b/src/public/app/doc_notes/en/User Guide/!!!meta.json
index 56ec7d553..087d765ae 100644
--- a/src/public/app/doc_notes/en/User Guide/!!!meta.json
+++ b/src/public/app/doc_notes/en/User Guide/!!!meta.json
@@ -1,6 +1,6 @@
{
"formatVersion": 2,
- "appVersion": "0.92.3-beta",
+ "appVersion": "0.92.4",
"files": [
{
"isClone": false,
@@ -9,7 +9,7 @@
"pOsGYCXsbNQG"
],
"title": "User Guide",
- "notePosition": 10,
+ "notePosition": 130,
"prefix": null,
"isExpanded": true,
"type": "text",
@@ -20,6 +20,1389 @@
"attachments": [],
"dirFileName": "User Guide",
"children": [
+ {
+ "isClone": false,
+ "noteId": "tC7s2alapj8V",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V"
+ ],
+ "title": "Advanced Usage",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-rocket",
+ "isInheritable": false,
+ "position": 10
+ }
+ ],
+ "format": "html",
+ "attachments": [],
+ "dirFileName": "Advanced Usage",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "zEY4DaJG4YT5",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "zEY4DaJG4YT5"
+ ],
+ "title": "Attributes",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/markdown",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "R7abl2fc6Mxi",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "l0tKav7yLHGF",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "p9kXRFAkwN4o",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "J5Ex1ZrMbyJ6",
+ "isInheritable": false,
+ "position": 40
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "9sRHySam5fXb",
+ "isInheritable": false,
+ "position": 50
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "u3YFHC9tQlpm",
+ "isInheritable": false,
+ "position": 60
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "R9pX4DGra2Vt",
+ "isInheritable": false,
+ "position": 70
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "47ZrP6FNuoG8",
+ "isInheritable": false,
+ "position": 80
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "OFXdgB2nNk1F",
+ "isInheritable": false,
+ "position": 90
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "bwZpz2ajCEwO",
+ "isInheritable": false,
+ "position": 100
+ },
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "attributes",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "format": "html",
+ "dataFileName": "Attributes.html",
+ "attachments": [
+ {
+ "attachmentId": "P4eRVtGFoHh2",
+ "title": "image.png",
+ "role": "image",
+ "mime": "image/jpg",
+ "position": 10,
+ "dataFileName": "Attributes_image.png"
+ }
+ ],
+ "dirFileName": "Attributes",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "bwZpz2ajCEwO",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "zEY4DaJG4YT5",
+ "bwZpz2ajCEwO"
+ ],
+ "title": "Attribute Inheritance",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/markdown",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "KC1HB96bqqHX",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "attribute-inheritance",
+ "isInheritable": false,
+ "position": 20
+ }
+ ],
+ "format": "html",
+ "dataFileName": "Attribute Inheritance.html",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "OFXdgB2nNk1F",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "zEY4DaJG4YT5",
+ "OFXdgB2nNk1F"
+ ],
+ "title": "Promoted Attributes",
+ "notePosition": 20,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/markdown",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "zEY4DaJG4YT5",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "bwZpz2ajCEwO",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "relation",
+ "name": "imageLink",
+ "value": "rxH2Dm1jn6YT",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "promoted-attributes",
+ "isInheritable": false,
+ "position": 20
+ }
+ ],
+ "format": "html",
+ "dataFileName": "Promoted Attributes.html",
+ "attachments": [
+ {
+ "attachmentId": "4EcBRWF9iCk2",
+ "title": "image.png",
+ "role": "image",
+ "mime": "image/jpg",
+ "position": 10,
+ "dataFileName": "Promoted Attributes_image.png"
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "KC1HB96bqqHX",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "zEY4DaJG4YT5",
+ "KC1HB96bqqHX"
+ ],
+ "title": "Template",
+ "notePosition": 30,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/markdown",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "bwZpz2ajCEwO",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "OFXdgB2nNk1F",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "xYjQUYhpbUEW",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "l0tKav7yLHGF",
+ "isInheritable": false,
+ "position": 40
+ },
+ {
+ "type": "relation",
+ "name": "imageLink",
+ "value": "Y8kzZ5MSZLCC",
+ "isInheritable": false,
+ "position": 50
+ },
+ {
+ "type": "relation",
+ "name": "imageLink",
+ "value": "uuGrYX41lWN0",
+ "isInheritable": false,
+ "position": 60
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "9sRHySam5fXb",
+ "isInheritable": false,
+ "position": 70
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "wX4HbRucYSDD",
+ "isInheritable": false,
+ "position": 80
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "iRwzGnHPzonm",
+ "isInheritable": false,
+ "position": 90
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "47ZrP6FNuoG8",
+ "isInheritable": false,
+ "position": 100
+ },
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "template",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "format": "html",
+ "dataFileName": "Template.html",
+ "attachments": []
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "iRwzGnHPzonm",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "iRwzGnHPzonm"
+ ],
+ "title": "Relation Map",
+ "notePosition": 20,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/markdown",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "zEY4DaJG4YT5",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "OFXdgB2nNk1F",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "wX4HbRucYSDD",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "BCkXAVs63Ttv",
+ "isInheritable": false,
+ "position": 40
+ },
+ {
+ "type": "relation",
+ "name": "imageLink",
+ "value": "EH6qNioOHeyT",
+ "isInheritable": false,
+ "position": 50
+ },
+ {
+ "type": "relation",
+ "name": "imageLink",
+ "value": "xeZPrfi77XPu",
+ "isInheritable": false,
+ "position": 60
+ },
+ {
+ "type": "relation",
+ "name": "imageLink",
+ "value": "N98UhifxrVpZ",
+ "isInheritable": false,
+ "position": 70
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "kBrnXNG3Hplm",
+ "isInheritable": false,
+ "position": 80
+ },
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "relation-map",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "format": "html",
+ "dataFileName": "Relation Map.html",
+ "attachments": [
+ {
+ "attachmentId": "x92CIQzusTuc",
+ "title": "relation-map-dev-process-demo.gif",
+ "role": "image",
+ "mime": "image/gif",
+ "position": 10,
+ "dataFileName": "Relation Map_relation-map-.gif"
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "BCkXAVs63Ttv",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "BCkXAVs63Ttv"
+ ],
+ "title": "Note Map",
+ "notePosition": 30,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/markdown",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "zEY4DaJG4YT5",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "iRwzGnHPzonm",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "note-map",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "format": "html",
+ "dataFileName": "Note Map.html",
+ "attachments": [
+ {
+ "attachmentId": "F48iB3BbITHb",
+ "title": "image.png",
+ "role": "image",
+ "mime": "image/jpg",
+ "position": 10,
+ "dataFileName": "Note Map_image.png"
+ },
+ {
+ "attachmentId": "scmGuoLQPj8C",
+ "title": "image.png",
+ "role": "image",
+ "mime": "image/jpg",
+ "position": 10,
+ "dataFileName": "1_Note Map_image.png"
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "R9pX4DGra2Vt",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "R9pX4DGra2Vt"
+ ],
+ "title": "Sharing",
+ "notePosition": 50,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/markdown",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "imageLink",
+ "value": "5GcxcE9fP9xX",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "imageLink",
+ "value": "Ky3qOJJMZ731",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "relation",
+ "name": "imageLink",
+ "value": "lCtZz2Z59wPT",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "relation",
+ "name": "imageLink",
+ "value": "jEQNvpyaXIWE",
+ "isInheritable": false,
+ "position": 40
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "WOcw2SLH6tbX",
+ "isInheritable": false,
+ "position": 50
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "bwZpz2ajCEwO",
+ "isInheritable": false,
+ "position": 60
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "6f9hih2hXXZk",
+ "isInheritable": false,
+ "position": 70
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "Wy267RK4M69c",
+ "isInheritable": false,
+ "position": 80
+ },
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "sharing",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-share-alt",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "format": "html",
+ "dataFileName": "Sharing.html",
+ "attachments": [],
+ "dirFileName": "Sharing",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "Qjt68inQ2bRj",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "R9pX4DGra2Vt",
+ "Qjt68inQ2bRj"
+ ],
+ "title": "Serving directly the content of a note",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [],
+ "format": "html",
+ "dataFileName": "Serving directly the content o.html",
+ "attachments": [
+ {
+ "attachmentId": "eizmhhmocL6L",
+ "title": "image.png",
+ "role": "image",
+ "mime": "image/jpg",
+ "position": 10,
+ "dataFileName": "Serving directly the conte.png"
+ },
+ {
+ "attachmentId": "xicVjsf2Kmaz",
+ "title": "image.png",
+ "role": "image",
+ "mime": "image/jpg",
+ "position": 10,
+ "dataFileName": "1_Serving directly the conte.png"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "5668rwcirq1t",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "5668rwcirq1t"
+ ],
+ "title": "Advanced Showcases",
+ "notePosition": 70,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/markdown",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "CdNpE2pqjmI6",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "OFXdgB2nNk1F",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "wX4HbRucYSDD",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "iRwzGnHPzonm",
+ "isInheritable": false,
+ "position": 40
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "l0tKav7yLHGF",
+ "isInheritable": false,
+ "position": 50
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "R7abl2fc6Mxi",
+ "isInheritable": false,
+ "position": 60
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "xYjQUYhpbUEW",
+ "isInheritable": false,
+ "position": 70
+ },
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "advanced-showcases",
+ "isInheritable": false,
+ "position": 10
+ }
+ ],
+ "format": "html",
+ "dataFileName": "Advanced Showcases.html",
+ "attachments": [],
+ "dirFileName": "Advanced Showcases",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "l0tKav7yLHGF",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "5668rwcirq1t",
+ "l0tKav7yLHGF"
+ ],
+ "title": "Day Notes",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/markdown",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "IakOLONlIfGI",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "xYjQUYhpbUEW",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "OFXdgB2nNk1F",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "R7abl2fc6Mxi",
+ "isInheritable": false,
+ "position": 40
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "KC1HB96bqqHX",
+ "isInheritable": false,
+ "position": 50
+ },
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "day-notes",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-calendar",
+ "isInheritable": false,
+ "position": 40
+ }
+ ],
+ "format": "html",
+ "dataFileName": "Day Notes.html",
+ "attachments": [
+ {
+ "attachmentId": "9wmaElfXYjWM",
+ "title": "image.png",
+ "role": "image",
+ "mime": "image/png",
+ "position": 10,
+ "dataFileName": "Day Notes_image.png"
+ },
+ {
+ "attachmentId": "FL40jUEj7xLt",
+ "title": "image.png",
+ "role": "image",
+ "mime": "image/jpg",
+ "position": 10,
+ "dataFileName": "1_Day Notes_image.png"
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "R7abl2fc6Mxi",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "5668rwcirq1t",
+ "R7abl2fc6Mxi"
+ ],
+ "title": "Weight Tracker",
+ "notePosition": 20,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/markdown",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "l0tKav7yLHGF",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "GLks18SNjxmC",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "wX4HbRucYSDD",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "OFXdgB2nNk1F",
+ "isInheritable": false,
+ "position": 40
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "KC1HB96bqqHX",
+ "isInheritable": false,
+ "position": 50
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "CdNpE2pqjmI6",
+ "isInheritable": false,
+ "position": 60
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "zEY4DaJG4YT5",
+ "isInheritable": false,
+ "position": 70
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "6f9hih2hXXZk",
+ "isInheritable": false,
+ "position": 80
+ },
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "weight-tracker",
+ "isInheritable": false,
+ "position": 20
+ }
+ ],
+ "format": "html",
+ "dataFileName": "Weight Tracker.html",
+ "attachments": [
+ {
+ "attachmentId": "Ah5QpwUUEGf8",
+ "title": "image.png",
+ "role": "image",
+ "mime": "image/jpg",
+ "position": 10,
+ "dataFileName": "Weight Tracker_image.png"
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "xYjQUYhpbUEW",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "5668rwcirq1t",
+ "xYjQUYhpbUEW"
+ ],
+ "title": "Task Manager",
+ "notePosition": 30,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/markdown",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "l0tKav7yLHGF",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "imageLink",
+ "value": "92KeXdKh3Ca1",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "OFXdgB2nNk1F",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "CdNpE2pqjmI6",
+ "isInheritable": false,
+ "position": 40
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "wX4HbRucYSDD",
+ "isInheritable": false,
+ "position": 50
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "IakOLONlIfGI",
+ "isInheritable": false,
+ "position": 60
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "kBrnXNG3Hplm",
+ "isInheritable": false,
+ "position": 70
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "zEY4DaJG4YT5",
+ "isInheritable": false,
+ "position": 80
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "bwZpz2ajCEwO",
+ "isInheritable": false,
+ "position": 90
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "GPERMystNGTB",
+ "isInheritable": false,
+ "position": 100
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "6f9hih2hXXZk",
+ "isInheritable": false,
+ "position": 110
+ },
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "task-manager",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "format": "html",
+ "dataFileName": "Task Manager.html",
+ "attachments": []
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "J5Ex1ZrMbyJ6",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "J5Ex1ZrMbyJ6"
+ ],
+ "title": "Custom Request Handler",
+ "notePosition": 80,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/markdown",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "zEY4DaJG4YT5",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "CdNpE2pqjmI6",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "6f9hih2hXXZk",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "GLks18SNjxmC",
+ "isInheritable": false,
+ "position": 40
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "d3fAXQ2diepH",
+ "isInheritable": false,
+ "position": 50
+ },
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "custom-request-handler",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "format": "html",
+ "dataFileName": "Custom Request Handler.html",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "d3fAXQ2diepH",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "d3fAXQ2diepH"
+ ],
+ "title": "Custom Resource Providers",
+ "notePosition": 90,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [],
+ "format": "html",
+ "dataFileName": "Custom Resource Providers.html",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "pgxEVkzLl1OP",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "pgxEVkzLl1OP"
+ ],
+ "title": "ETAPI (REST API)",
+ "notePosition": 100,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/markdown",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "etapi",
+ "isInheritable": false,
+ "position": 10
+ }
+ ],
+ "format": "html",
+ "dataFileName": "ETAPI (REST API).html",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "47ZrP6FNuoG8",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "47ZrP6FNuoG8"
+ ],
+ "title": "Default Note Title",
+ "notePosition": 110,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/markdown",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "zEY4DaJG4YT5",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "KC1HB96bqqHX",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "default-note-title",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "format": "html",
+ "dataFileName": "Default Note Title.html",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "wX4HbRucYSDD",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "wX4HbRucYSDD"
+ ],
+ "title": "Database",
+ "notePosition": 130,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/markdown",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "tAassRL4RSQL",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "iRwzGnHPzonm",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "l0tKav7yLHGF",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "R7abl2fc6Mxi",
+ "isInheritable": false,
+ "position": 40
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "xYjQUYhpbUEW",
+ "isInheritable": false,
+ "position": 50
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "Wy267RK4M69c",
+ "isInheritable": false,
+ "position": 60
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "oyIAJ9PvvwHX",
+ "isInheritable": false,
+ "position": 70
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "Gzjqa934BdH4",
+ "isInheritable": false,
+ "position": 80
+ },
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "database",
+ "isInheritable": false,
+ "position": 30
+ },
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-data",
+ "isInheritable": false,
+ "position": 50
+ }
+ ],
+ "format": "html",
+ "dataFileName": "Database.html",
+ "attachments": [],
+ "dirFileName": "Database",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "oyIAJ9PvvwHX",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "wX4HbRucYSDD",
+ "oyIAJ9PvvwHX"
+ ],
+ "title": "Manually altering the database",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "YKWqdJhzi2VY",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "tAassRL4RSQL",
+ "isInheritable": false,
+ "position": 20
+ }
+ ],
+ "format": "html",
+ "dataFileName": "Manually altering the database.html",
+ "attachments": [
+ {
+ "attachmentId": "0740ph4lJ4rv",
+ "title": "image.png",
+ "role": "image",
+ "mime": "image/jpg",
+ "position": 10,
+ "dataFileName": "Manually altering the data.png"
+ }
+ ],
+ "dirFileName": "Manually altering the database",
+ "children": [
+ {
+ "isClone": false,
+ "noteId": "YKWqdJhzi2VY",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "wX4HbRucYSDD",
+ "oyIAJ9PvvwHX",
+ "YKWqdJhzi2VY"
+ ],
+ "title": "SQL Console",
+ "notePosition": 10,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "l0tKav7yLHGF",
+ "isInheritable": false,
+ "position": 10
+ },
+ {
+ "type": "relation",
+ "name": "internalLink",
+ "value": "Vc8PjrjAGuOp",
+ "isInheritable": false,
+ "position": 20
+ },
+ {
+ "type": "label",
+ "name": "iconClass",
+ "value": "bx bx-data",
+ "isInheritable": false,
+ "position": 30
+ }
+ ],
+ "format": "html",
+ "dataFileName": "SQL Console.html",
+ "attachments": [
+ {
+ "attachmentId": "1YS10Qg7S4YR",
+ "title": "image.png",
+ "role": "image",
+ "mime": "image/jpg",
+ "position": 10,
+ "dataFileName": "SQL Console_image.png"
+ },
+ {
+ "attachmentId": "827EgLgWhZWF",
+ "title": "image.png",
+ "role": "image",
+ "mime": "image/jpg",
+ "position": 10,
+ "dataFileName": "1_SQL Console_image.png"
+ },
+ {
+ "attachmentId": "gIbK7NNLu3iZ",
+ "title": "image.png",
+ "role": "image",
+ "mime": "image/png",
+ "position": 10,
+ "dataFileName": "2_SQL Console_image.png"
+ },
+ {
+ "attachmentId": "pP87PB9ELjQn",
+ "title": "image.png",
+ "role": "image",
+ "mime": "image/png",
+ "position": 10,
+ "dataFileName": "3_SQL Console_image.png"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "isClone": false,
+ "noteId": "Gzjqa934BdH4",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "Gzjqa934BdH4"
+ ],
+ "title": "Configuration (config.ini or environment variables)",
+ "notePosition": 140,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/markdown",
+ "attributes": [
+ {
+ "type": "label",
+ "name": "shareAlias",
+ "value": "configuration",
+ "isInheritable": false,
+ "position": 10
+ }
+ ],
+ "format": "html",
+ "dataFileName": "Configuration (config.ini or e.html",
+ "attachments": []
+ },
+ {
+ "isClone": false,
+ "noteId": "ivYnonVFBxbQ",
+ "notePath": [
+ "pOsGYCXsbNQG",
+ "tC7s2alapj8V",
+ "ivYnonVFBxbQ"
+ ],
+ "title": "Bulk actions",
+ "notePosition": 150,
+ "prefix": null,
+ "isExpanded": false,
+ "type": "text",
+ "mime": "text/html",
+ "attributes": [],
+ "format": "html",
+ "dataFileName": "Bulk actions.html",
+ "attachments": []
+ }
+ ]
+ },
{
"isClone": false,
"noteId": "Otzi9La2YAUX",
@@ -2708,7 +4091,7 @@
"title": "Text",
"notePosition": 10,
"prefix": null,
- "isExpanded": true,
+ "isExpanded": false,
"type": "text",
"mime": "text/markdown",
"attributes": [
@@ -3787,7 +5170,7 @@
"title": "Book",
"notePosition": 120,
"prefix": null,
- "isExpanded": false,
+ "isExpanded": true,
"type": "text",
"mime": "text/markdown",
"attributes": [
@@ -3903,7 +5286,7 @@
"dataFileName": "4_Calendar View_image.png"
},
{
- "attachmentId": "GeEGbbeQ1qy9",
+ "attachmentId": "HfBu0m3WXtn2",
"title": "image.png",
"role": "image",
"mime": "image/png",
@@ -3911,7 +5294,7 @@
"dataFileName": "5_Calendar View_image.png"
},
{
- "attachmentId": "gQvwJGB5a4c1",
+ "attachmentId": "ho00OJTNrxVI",
"title": "image.png",
"role": "image",
"mime": "image/png",
@@ -3919,7 +5302,7 @@
"dataFileName": "6_Calendar View_image.png"
},
{
- "attachmentId": "HfBu0m3WXtn2",
+ "attachmentId": "irfNX8n4159U",
"title": "image.png",
"role": "image",
"mime": "image/png",
@@ -3927,7 +5310,7 @@
"dataFileName": "7_Calendar View_image.png"
},
{
- "attachmentId": "ho00OJTNrxVI",
+ "attachmentId": "KF56rdNuOwWd",
"title": "image.png",
"role": "image",
"mime": "image/png",
@@ -3935,7 +5318,7 @@
"dataFileName": "8_Calendar View_image.png"
},
{
- "attachmentId": "irfNX8n4159U",
+ "attachmentId": "oBWr5GL6cUAZ",
"title": "image.png",
"role": "image",
"mime": "image/png",
@@ -3943,44 +5326,20 @@
"dataFileName": "9_Calendar View_image.png"
},
{
- "attachmentId": "KF56rdNuOwWd",
+ "attachmentId": "oS6yUoQtfhpg",
"title": "image.png",
"role": "image",
"mime": "image/png",
"position": 10,
"dataFileName": "10_Calendar View_image.png"
},
- {
- "attachmentId": "oBWr5GL6cUAZ",
- "title": "image.png",
- "role": "image",
- "mime": "image/png",
- "position": 10,
- "dataFileName": "11_Calendar View_image.png"
- },
- {
- "attachmentId": "oS6yUoQtfhpg",
- "title": "image.png",
- "role": "image",
- "mime": "image/png",
- "position": 10,
- "dataFileName": "12_Calendar View_image.png"
- },
- {
- "attachmentId": "PYHfGSBQpr0y",
- "title": "image.png",
- "role": "image",
- "mime": "image/png",
- "position": 10,
- "dataFileName": "13_Calendar View_image.png"
- },
{
"attachmentId": "u2c09UpZghff",
"title": "image.png",
"role": "image",
"mime": "image/png",
"position": 10,
- "dataFileName": "14_Calendar View_image.png"
+ "dataFileName": "11_Calendar View_image.png"
}
]
}
@@ -4357,1389 +5716,6 @@
}
]
},
- {
- "isClone": false,
- "noteId": "tC7s2alapj8V",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V"
- ],
- "title": "Advanced Usage",
- "notePosition": 110,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/html",
- "attributes": [
- {
- "type": "label",
- "name": "iconClass",
- "value": "bx bx-rocket",
- "isInheritable": false,
- "position": 10
- }
- ],
- "format": "html",
- "attachments": [],
- "dirFileName": "Advanced Usage",
- "children": [
- {
- "isClone": false,
- "noteId": "zEY4DaJG4YT5",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V",
- "zEY4DaJG4YT5"
- ],
- "title": "Attributes",
- "notePosition": 10,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/markdown",
- "attributes": [
- {
- "type": "relation",
- "name": "internalLink",
- "value": "R7abl2fc6Mxi",
- "isInheritable": false,
- "position": 10
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "l0tKav7yLHGF",
- "isInheritable": false,
- "position": 20
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "p9kXRFAkwN4o",
- "isInheritable": false,
- "position": 30
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "J5Ex1ZrMbyJ6",
- "isInheritable": false,
- "position": 40
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "9sRHySam5fXb",
- "isInheritable": false,
- "position": 50
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "u3YFHC9tQlpm",
- "isInheritable": false,
- "position": 60
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "R9pX4DGra2Vt",
- "isInheritable": false,
- "position": 70
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "47ZrP6FNuoG8",
- "isInheritable": false,
- "position": 80
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "OFXdgB2nNk1F",
- "isInheritable": false,
- "position": 90
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "bwZpz2ajCEwO",
- "isInheritable": false,
- "position": 100
- },
- {
- "type": "label",
- "name": "shareAlias",
- "value": "attributes",
- "isInheritable": false,
- "position": 30
- }
- ],
- "format": "html",
- "dataFileName": "Attributes.html",
- "attachments": [
- {
- "attachmentId": "P4eRVtGFoHh2",
- "title": "image.png",
- "role": "image",
- "mime": "image/jpg",
- "position": 10,
- "dataFileName": "Attributes_image.png"
- }
- ],
- "dirFileName": "Attributes",
- "children": [
- {
- "isClone": false,
- "noteId": "bwZpz2ajCEwO",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V",
- "zEY4DaJG4YT5",
- "bwZpz2ajCEwO"
- ],
- "title": "Attribute Inheritance",
- "notePosition": 10,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/markdown",
- "attributes": [
- {
- "type": "relation",
- "name": "internalLink",
- "value": "KC1HB96bqqHX",
- "isInheritable": false,
- "position": 10
- },
- {
- "type": "label",
- "name": "shareAlias",
- "value": "attribute-inheritance",
- "isInheritable": false,
- "position": 20
- }
- ],
- "format": "html",
- "dataFileName": "Attribute Inheritance.html",
- "attachments": []
- },
- {
- "isClone": false,
- "noteId": "OFXdgB2nNk1F",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V",
- "zEY4DaJG4YT5",
- "OFXdgB2nNk1F"
- ],
- "title": "Promoted Attributes",
- "notePosition": 20,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/markdown",
- "attributes": [
- {
- "type": "relation",
- "name": "internalLink",
- "value": "zEY4DaJG4YT5",
- "isInheritable": false,
- "position": 10
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "bwZpz2ajCEwO",
- "isInheritable": false,
- "position": 20
- },
- {
- "type": "relation",
- "name": "imageLink",
- "value": "rxH2Dm1jn6YT",
- "isInheritable": false,
- "position": 30
- },
- {
- "type": "label",
- "name": "shareAlias",
- "value": "promoted-attributes",
- "isInheritable": false,
- "position": 20
- }
- ],
- "format": "html",
- "dataFileName": "Promoted Attributes.html",
- "attachments": [
- {
- "attachmentId": "4EcBRWF9iCk2",
- "title": "image.png",
- "role": "image",
- "mime": "image/jpg",
- "position": 10,
- "dataFileName": "Promoted Attributes_image.png"
- }
- ]
- },
- {
- "isClone": false,
- "noteId": "KC1HB96bqqHX",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V",
- "zEY4DaJG4YT5",
- "KC1HB96bqqHX"
- ],
- "title": "Template",
- "notePosition": 30,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/markdown",
- "attributes": [
- {
- "type": "relation",
- "name": "internalLink",
- "value": "bwZpz2ajCEwO",
- "isInheritable": false,
- "position": 10
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "OFXdgB2nNk1F",
- "isInheritable": false,
- "position": 20
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "xYjQUYhpbUEW",
- "isInheritable": false,
- "position": 30
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "l0tKav7yLHGF",
- "isInheritable": false,
- "position": 40
- },
- {
- "type": "relation",
- "name": "imageLink",
- "value": "Y8kzZ5MSZLCC",
- "isInheritable": false,
- "position": 50
- },
- {
- "type": "relation",
- "name": "imageLink",
- "value": "uuGrYX41lWN0",
- "isInheritable": false,
- "position": 60
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "9sRHySam5fXb",
- "isInheritable": false,
- "position": 70
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "wX4HbRucYSDD",
- "isInheritable": false,
- "position": 80
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "iRwzGnHPzonm",
- "isInheritable": false,
- "position": 90
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "47ZrP6FNuoG8",
- "isInheritable": false,
- "position": 100
- },
- {
- "type": "label",
- "name": "shareAlias",
- "value": "template",
- "isInheritable": false,
- "position": 30
- }
- ],
- "format": "html",
- "dataFileName": "Template.html",
- "attachments": []
- }
- ]
- },
- {
- "isClone": false,
- "noteId": "iRwzGnHPzonm",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V",
- "iRwzGnHPzonm"
- ],
- "title": "Relation Map",
- "notePosition": 20,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/markdown",
- "attributes": [
- {
- "type": "relation",
- "name": "internalLink",
- "value": "zEY4DaJG4YT5",
- "isInheritable": false,
- "position": 10
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "OFXdgB2nNk1F",
- "isInheritable": false,
- "position": 20
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "wX4HbRucYSDD",
- "isInheritable": false,
- "position": 30
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "BCkXAVs63Ttv",
- "isInheritable": false,
- "position": 40
- },
- {
- "type": "relation",
- "name": "imageLink",
- "value": "EH6qNioOHeyT",
- "isInheritable": false,
- "position": 50
- },
- {
- "type": "relation",
- "name": "imageLink",
- "value": "xeZPrfi77XPu",
- "isInheritable": false,
- "position": 60
- },
- {
- "type": "relation",
- "name": "imageLink",
- "value": "N98UhifxrVpZ",
- "isInheritable": false,
- "position": 70
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "kBrnXNG3Hplm",
- "isInheritable": false,
- "position": 80
- },
- {
- "type": "label",
- "name": "shareAlias",
- "value": "relation-map",
- "isInheritable": false,
- "position": 30
- }
- ],
- "format": "html",
- "dataFileName": "Relation Map.html",
- "attachments": [
- {
- "attachmentId": "x92CIQzusTuc",
- "title": "relation-map-dev-process-demo.gif",
- "role": "image",
- "mime": "image/gif",
- "position": 10,
- "dataFileName": "Relation Map_relation-map-.gif"
- }
- ]
- },
- {
- "isClone": false,
- "noteId": "BCkXAVs63Ttv",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V",
- "BCkXAVs63Ttv"
- ],
- "title": "Note Map",
- "notePosition": 30,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/markdown",
- "attributes": [
- {
- "type": "relation",
- "name": "internalLink",
- "value": "zEY4DaJG4YT5",
- "isInheritable": false,
- "position": 10
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "iRwzGnHPzonm",
- "isInheritable": false,
- "position": 20
- },
- {
- "type": "label",
- "name": "shareAlias",
- "value": "note-map",
- "isInheritable": false,
- "position": 30
- }
- ],
- "format": "html",
- "dataFileName": "Note Map.html",
- "attachments": [
- {
- "attachmentId": "F48iB3BbITHb",
- "title": "image.png",
- "role": "image",
- "mime": "image/jpg",
- "position": 10,
- "dataFileName": "Note Map_image.png"
- },
- {
- "attachmentId": "scmGuoLQPj8C",
- "title": "image.png",
- "role": "image",
- "mime": "image/jpg",
- "position": 10,
- "dataFileName": "1_Note Map_image.png"
- }
- ]
- },
- {
- "isClone": false,
- "noteId": "R9pX4DGra2Vt",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V",
- "R9pX4DGra2Vt"
- ],
- "title": "Sharing",
- "notePosition": 50,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/markdown",
- "attributes": [
- {
- "type": "relation",
- "name": "imageLink",
- "value": "5GcxcE9fP9xX",
- "isInheritable": false,
- "position": 10
- },
- {
- "type": "relation",
- "name": "imageLink",
- "value": "Ky3qOJJMZ731",
- "isInheritable": false,
- "position": 20
- },
- {
- "type": "relation",
- "name": "imageLink",
- "value": "lCtZz2Z59wPT",
- "isInheritable": false,
- "position": 30
- },
- {
- "type": "relation",
- "name": "imageLink",
- "value": "jEQNvpyaXIWE",
- "isInheritable": false,
- "position": 40
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "WOcw2SLH6tbX",
- "isInheritable": false,
- "position": 50
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "bwZpz2ajCEwO",
- "isInheritable": false,
- "position": 60
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "6f9hih2hXXZk",
- "isInheritable": false,
- "position": 70
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "Wy267RK4M69c",
- "isInheritable": false,
- "position": 80
- },
- {
- "type": "label",
- "name": "shareAlias",
- "value": "sharing",
- "isInheritable": false,
- "position": 10
- },
- {
- "type": "label",
- "name": "iconClass",
- "value": "bx bx-share-alt",
- "isInheritable": false,
- "position": 30
- }
- ],
- "format": "html",
- "dataFileName": "Sharing.html",
- "attachments": [],
- "dirFileName": "Sharing",
- "children": [
- {
- "isClone": false,
- "noteId": "Qjt68inQ2bRj",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V",
- "R9pX4DGra2Vt",
- "Qjt68inQ2bRj"
- ],
- "title": "Serving directly the content of a note",
- "notePosition": 10,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/html",
- "attributes": [],
- "format": "html",
- "dataFileName": "Serving directly the content o.html",
- "attachments": [
- {
- "attachmentId": "eizmhhmocL6L",
- "title": "image.png",
- "role": "image",
- "mime": "image/jpg",
- "position": 10,
- "dataFileName": "Serving directly the conte.png"
- },
- {
- "attachmentId": "xicVjsf2Kmaz",
- "title": "image.png",
- "role": "image",
- "mime": "image/jpg",
- "position": 10,
- "dataFileName": "1_Serving directly the conte.png"
- }
- ]
- }
- ]
- },
- {
- "isClone": false,
- "noteId": "5668rwcirq1t",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V",
- "5668rwcirq1t"
- ],
- "title": "Advanced Showcases",
- "notePosition": 70,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/markdown",
- "attributes": [
- {
- "type": "relation",
- "name": "internalLink",
- "value": "CdNpE2pqjmI6",
- "isInheritable": false,
- "position": 10
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "OFXdgB2nNk1F",
- "isInheritable": false,
- "position": 20
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "wX4HbRucYSDD",
- "isInheritable": false,
- "position": 30
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "iRwzGnHPzonm",
- "isInheritable": false,
- "position": 40
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "l0tKav7yLHGF",
- "isInheritable": false,
- "position": 50
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "R7abl2fc6Mxi",
- "isInheritable": false,
- "position": 60
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "xYjQUYhpbUEW",
- "isInheritable": false,
- "position": 70
- },
- {
- "type": "label",
- "name": "shareAlias",
- "value": "advanced-showcases",
- "isInheritable": false,
- "position": 10
- }
- ],
- "format": "html",
- "dataFileName": "Advanced Showcases.html",
- "attachments": [],
- "dirFileName": "Advanced Showcases",
- "children": [
- {
- "isClone": false,
- "noteId": "l0tKav7yLHGF",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V",
- "5668rwcirq1t",
- "l0tKav7yLHGF"
- ],
- "title": "Day Notes",
- "notePosition": 10,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/markdown",
- "attributes": [
- {
- "type": "relation",
- "name": "internalLink",
- "value": "IakOLONlIfGI",
- "isInheritable": false,
- "position": 10
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "xYjQUYhpbUEW",
- "isInheritable": false,
- "position": 20
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "OFXdgB2nNk1F",
- "isInheritable": false,
- "position": 30
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "R7abl2fc6Mxi",
- "isInheritable": false,
- "position": 40
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "KC1HB96bqqHX",
- "isInheritable": false,
- "position": 50
- },
- {
- "type": "label",
- "name": "shareAlias",
- "value": "day-notes",
- "isInheritable": false,
- "position": 10
- },
- {
- "type": "label",
- "name": "iconClass",
- "value": "bx bx-calendar",
- "isInheritable": false,
- "position": 40
- }
- ],
- "format": "html",
- "dataFileName": "Day Notes.html",
- "attachments": [
- {
- "attachmentId": "9wmaElfXYjWM",
- "title": "image.png",
- "role": "image",
- "mime": "image/png",
- "position": 10,
- "dataFileName": "Day Notes_image.png"
- },
- {
- "attachmentId": "FL40jUEj7xLt",
- "title": "image.png",
- "role": "image",
- "mime": "image/jpg",
- "position": 10,
- "dataFileName": "1_Day Notes_image.png"
- }
- ]
- },
- {
- "isClone": false,
- "noteId": "R7abl2fc6Mxi",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V",
- "5668rwcirq1t",
- "R7abl2fc6Mxi"
- ],
- "title": "Weight Tracker",
- "notePosition": 20,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/markdown",
- "attributes": [
- {
- "type": "relation",
- "name": "internalLink",
- "value": "l0tKav7yLHGF",
- "isInheritable": false,
- "position": 10
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "GLks18SNjxmC",
- "isInheritable": false,
- "position": 20
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "wX4HbRucYSDD",
- "isInheritable": false,
- "position": 30
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "OFXdgB2nNk1F",
- "isInheritable": false,
- "position": 40
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "KC1HB96bqqHX",
- "isInheritable": false,
- "position": 50
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "CdNpE2pqjmI6",
- "isInheritable": false,
- "position": 60
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "zEY4DaJG4YT5",
- "isInheritable": false,
- "position": 70
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "6f9hih2hXXZk",
- "isInheritable": false,
- "position": 80
- },
- {
- "type": "label",
- "name": "shareAlias",
- "value": "weight-tracker",
- "isInheritable": false,
- "position": 20
- }
- ],
- "format": "html",
- "dataFileName": "Weight Tracker.html",
- "attachments": [
- {
- "attachmentId": "Ah5QpwUUEGf8",
- "title": "image.png",
- "role": "image",
- "mime": "image/jpg",
- "position": 10,
- "dataFileName": "Weight Tracker_image.png"
- }
- ]
- },
- {
- "isClone": false,
- "noteId": "xYjQUYhpbUEW",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V",
- "5668rwcirq1t",
- "xYjQUYhpbUEW"
- ],
- "title": "Task Manager",
- "notePosition": 30,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/markdown",
- "attributes": [
- {
- "type": "relation",
- "name": "internalLink",
- "value": "l0tKav7yLHGF",
- "isInheritable": false,
- "position": 10
- },
- {
- "type": "relation",
- "name": "imageLink",
- "value": "92KeXdKh3Ca1",
- "isInheritable": false,
- "position": 20
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "OFXdgB2nNk1F",
- "isInheritable": false,
- "position": 30
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "CdNpE2pqjmI6",
- "isInheritable": false,
- "position": 40
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "wX4HbRucYSDD",
- "isInheritable": false,
- "position": 50
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "IakOLONlIfGI",
- "isInheritable": false,
- "position": 60
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "kBrnXNG3Hplm",
- "isInheritable": false,
- "position": 70
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "zEY4DaJG4YT5",
- "isInheritable": false,
- "position": 80
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "bwZpz2ajCEwO",
- "isInheritable": false,
- "position": 90
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "GPERMystNGTB",
- "isInheritable": false,
- "position": 100
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "6f9hih2hXXZk",
- "isInheritable": false,
- "position": 110
- },
- {
- "type": "label",
- "name": "shareAlias",
- "value": "task-manager",
- "isInheritable": false,
- "position": 30
- }
- ],
- "format": "html",
- "dataFileName": "Task Manager.html",
- "attachments": []
- }
- ]
- },
- {
- "isClone": false,
- "noteId": "J5Ex1ZrMbyJ6",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V",
- "J5Ex1ZrMbyJ6"
- ],
- "title": "Custom Request Handler",
- "notePosition": 80,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/markdown",
- "attributes": [
- {
- "type": "relation",
- "name": "internalLink",
- "value": "zEY4DaJG4YT5",
- "isInheritable": false,
- "position": 10
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "CdNpE2pqjmI6",
- "isInheritable": false,
- "position": 20
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "6f9hih2hXXZk",
- "isInheritable": false,
- "position": 30
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "GLks18SNjxmC",
- "isInheritable": false,
- "position": 40
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "d3fAXQ2diepH",
- "isInheritable": false,
- "position": 50
- },
- {
- "type": "label",
- "name": "shareAlias",
- "value": "custom-request-handler",
- "isInheritable": false,
- "position": 30
- }
- ],
- "format": "html",
- "dataFileName": "Custom Request Handler.html",
- "attachments": []
- },
- {
- "isClone": false,
- "noteId": "d3fAXQ2diepH",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V",
- "d3fAXQ2diepH"
- ],
- "title": "Custom Resource Providers",
- "notePosition": 90,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/html",
- "attributes": [],
- "format": "html",
- "dataFileName": "Custom Resource Providers.html",
- "attachments": []
- },
- {
- "isClone": false,
- "noteId": "pgxEVkzLl1OP",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V",
- "pgxEVkzLl1OP"
- ],
- "title": "ETAPI (REST API)",
- "notePosition": 100,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/markdown",
- "attributes": [
- {
- "type": "label",
- "name": "shareAlias",
- "value": "etapi",
- "isInheritable": false,
- "position": 10
- }
- ],
- "format": "html",
- "dataFileName": "ETAPI (REST API).html",
- "attachments": []
- },
- {
- "isClone": false,
- "noteId": "47ZrP6FNuoG8",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V",
- "47ZrP6FNuoG8"
- ],
- "title": "Default Note Title",
- "notePosition": 110,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/markdown",
- "attributes": [
- {
- "type": "relation",
- "name": "internalLink",
- "value": "zEY4DaJG4YT5",
- "isInheritable": false,
- "position": 10
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "KC1HB96bqqHX",
- "isInheritable": false,
- "position": 20
- },
- {
- "type": "label",
- "name": "shareAlias",
- "value": "default-note-title",
- "isInheritable": false,
- "position": 30
- }
- ],
- "format": "html",
- "dataFileName": "Default Note Title.html",
- "attachments": []
- },
- {
- "isClone": false,
- "noteId": "wX4HbRucYSDD",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V",
- "wX4HbRucYSDD"
- ],
- "title": "Database",
- "notePosition": 130,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/markdown",
- "attributes": [
- {
- "type": "relation",
- "name": "internalLink",
- "value": "tAassRL4RSQL",
- "isInheritable": false,
- "position": 10
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "iRwzGnHPzonm",
- "isInheritable": false,
- "position": 20
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "l0tKav7yLHGF",
- "isInheritable": false,
- "position": 30
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "R7abl2fc6Mxi",
- "isInheritable": false,
- "position": 40
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "xYjQUYhpbUEW",
- "isInheritable": false,
- "position": 50
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "Wy267RK4M69c",
- "isInheritable": false,
- "position": 60
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "oyIAJ9PvvwHX",
- "isInheritable": false,
- "position": 70
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "Gzjqa934BdH4",
- "isInheritable": false,
- "position": 80
- },
- {
- "type": "label",
- "name": "shareAlias",
- "value": "database",
- "isInheritable": false,
- "position": 30
- },
- {
- "type": "label",
- "name": "iconClass",
- "value": "bx bx-data",
- "isInheritable": false,
- "position": 50
- }
- ],
- "format": "html",
- "dataFileName": "Database.html",
- "attachments": [],
- "dirFileName": "Database",
- "children": [
- {
- "isClone": false,
- "noteId": "oyIAJ9PvvwHX",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V",
- "wX4HbRucYSDD",
- "oyIAJ9PvvwHX"
- ],
- "title": "Manually altering the database",
- "notePosition": 10,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/html",
- "attributes": [
- {
- "type": "relation",
- "name": "internalLink",
- "value": "YKWqdJhzi2VY",
- "isInheritable": false,
- "position": 10
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "tAassRL4RSQL",
- "isInheritable": false,
- "position": 20
- }
- ],
- "format": "html",
- "dataFileName": "Manually altering the database.html",
- "attachments": [
- {
- "attachmentId": "0740ph4lJ4rv",
- "title": "image.png",
- "role": "image",
- "mime": "image/jpg",
- "position": 10,
- "dataFileName": "Manually altering the data.png"
- }
- ],
- "dirFileName": "Manually altering the database",
- "children": [
- {
- "isClone": false,
- "noteId": "YKWqdJhzi2VY",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V",
- "wX4HbRucYSDD",
- "oyIAJ9PvvwHX",
- "YKWqdJhzi2VY"
- ],
- "title": "SQL Console",
- "notePosition": 10,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/html",
- "attributes": [
- {
- "type": "relation",
- "name": "internalLink",
- "value": "l0tKav7yLHGF",
- "isInheritable": false,
- "position": 10
- },
- {
- "type": "relation",
- "name": "internalLink",
- "value": "Vc8PjrjAGuOp",
- "isInheritable": false,
- "position": 20
- },
- {
- "type": "label",
- "name": "iconClass",
- "value": "bx bx-data",
- "isInheritable": false,
- "position": 30
- }
- ],
- "format": "html",
- "dataFileName": "SQL Console.html",
- "attachments": [
- {
- "attachmentId": "1YS10Qg7S4YR",
- "title": "image.png",
- "role": "image",
- "mime": "image/jpg",
- "position": 10,
- "dataFileName": "SQL Console_image.png"
- },
- {
- "attachmentId": "827EgLgWhZWF",
- "title": "image.png",
- "role": "image",
- "mime": "image/jpg",
- "position": 10,
- "dataFileName": "1_SQL Console_image.png"
- },
- {
- "attachmentId": "gIbK7NNLu3iZ",
- "title": "image.png",
- "role": "image",
- "mime": "image/png",
- "position": 10,
- "dataFileName": "2_SQL Console_image.png"
- },
- {
- "attachmentId": "pP87PB9ELjQn",
- "title": "image.png",
- "role": "image",
- "mime": "image/png",
- "position": 10,
- "dataFileName": "3_SQL Console_image.png"
- }
- ]
- }
- ]
- }
- ]
- },
- {
- "isClone": false,
- "noteId": "Gzjqa934BdH4",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V",
- "Gzjqa934BdH4"
- ],
- "title": "Configuration (config.ini or environment variables)",
- "notePosition": 140,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/markdown",
- "attributes": [
- {
- "type": "label",
- "name": "shareAlias",
- "value": "configuration",
- "isInheritable": false,
- "position": 10
- }
- ],
- "format": "html",
- "dataFileName": "Configuration (config.ini or e.html",
- "attachments": []
- },
- {
- "isClone": false,
- "noteId": "ivYnonVFBxbQ",
- "notePath": [
- "pOsGYCXsbNQG",
- "tC7s2alapj8V",
- "ivYnonVFBxbQ"
- ],
- "title": "Bulk actions",
- "notePosition": 150,
- "prefix": null,
- "isExpanded": false,
- "type": "text",
- "mime": "text/html",
- "attributes": [],
- "format": "html",
- "dataFileName": "Bulk actions.html",
- "attachments": []
- }
- ]
- },
{
"isClone": false,
"noteId": "pKK96zzmvBGf",
diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/10_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/10_Calendar View_image.png
index 23a383270..e050184a7 100644
Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/10_Calendar View_image.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/10_Calendar View_image.png differ
diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/11_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/11_Calendar View_image.png
index 2dea53b64..53ac5632f 100644
Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/11_Calendar View_image.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/11_Calendar View_image.png differ
diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/12_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/12_Calendar View_image.png
deleted file mode 100644
index e050184a7..000000000
Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/12_Calendar View_image.png and /dev/null differ
diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/13_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/13_Calendar View_image.png
deleted file mode 100644
index 46698faac..000000000
Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/13_Calendar View_image.png and /dev/null differ
diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/14_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/14_Calendar View_image.png
deleted file mode 100644
index 53ac5632f..000000000
Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/14_Calendar View_image.png and /dev/null differ
diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/5_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/5_Calendar View_image.png
index f60aa0acc..7e97245a6 100644
Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/5_Calendar View_image.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/5_Calendar View_image.png differ
diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/6_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/6_Calendar View_image.png
index 71f7d2dc3..d588ed568 100644
Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/6_Calendar View_image.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/6_Calendar View_image.png differ
diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/7_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/7_Calendar View_image.png
index 7e97245a6..acf382206 100644
Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/7_Calendar View_image.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/7_Calendar View_image.png differ
diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/8_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/8_Calendar View_image.png
index d588ed568..23a383270 100644
Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/8_Calendar View_image.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/8_Calendar View_image.png differ
diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/9_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/9_Calendar View_image.png
index acf382206..2dea53b64 100644
Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/9_Calendar View_image.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/9_Calendar View_image.png differ
diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/Calendar View.html b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/Calendar View.html
index a36474936..7071358d5 100644
--- a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/Calendar View.html
+++ b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/Calendar View.html
@@ -18,6 +18,16 @@
The Calendar view of Book notes will display each child note in a calendar
that has a start date and optionally an end date, as an event.
+ The Calendar view has multiple display modes:
+
+ Week view, where all the 7 days of the week (or 5 if the weekends are
+ hidden) are displayed in columns. This mode allows entering and displaying
+ time-specific events, not just all-day events.
+ Month view, where the entire month is displayed and all-day events can
+ be inserted. Both time-specific events and all-day events are listed.
+ Year view, which displays the entire year for quick reference.
+ List view, which displays all the events of a given month in sequence.
+
Unlike other Book view types, the Calendar view also allows some kind
of interaction, such as moving events around as well as creating new ones.
Creating a calendar
@@ -71,7 +81,7 @@
+
+ #calendar:view
+
+
+ Which view to display in the calendar:
+
+ timeGridWeek
for the week view;
+ dayGridMonth
for the month view;
+ multiMonthYear
for the year view;
+ listMonth
for the list view.
+
+ Any other value will be dismissed and the default view (month) will be
+ used instead.
+ The value of this label is automatically updated when changing the view
+ using the UI buttons.
+
+
~child:template
@@ -136,6 +163,19 @@
across multiple days. The date is inclusive, so the end day is also considered.
The attribute can be missing for single-day events.
+
+ #startTime
+
+ The time the event starts at. If this value is missing, then the event
+ is considered a full-day event. The format is HH:MM
(hours in
+ 24-hour format and minutes).
+
+
+ #endTime
+
+ Similar to startTime
, it mentions the time at which the event
+ ends (in relation with endDate
if present, or startDate
).
+
#color
@@ -159,24 +199,24 @@
#calendar:title
Changes the title of an event to point to an attribute of the note other
- than the title, either a label (e.g. #assignee
) or a relation
- (e.g. ~for
). See Advanced use-cases for more information.
+ than the title, can either a label or a relation (without the #
or ~
symbol).
+ See Use-cases for more information.
#calendar:displayedAttributes
Allows displaying the value of one or more attributes in the calendar
- like this:
+ like this:
-
+
- <br>#weight="70"<br>#Mood="Good"<br>#calendar:displayedAttributes="weight,Mood"<br>
+ #weight="70" #Mood="Good" #calendar:displayedAttributes="weight,Mood"
It can also be used with relations, case in which it will display the
- title of the target note:
+ title of the target note:
- <br>~assignee=@My assignee<br>#calendar:displayedAttributes="assignee"<br>
+ ~assignee=@My assignee #calendar:displayedAttributes="assignee"
@@ -189,16 +229,27 @@
#calendar:endDate
- Allows using a different label to represent the start date, other than endDate
.
- The label name must not be prefixed with #
.
- If the label is not defined for a note, the default will be used instead.
+ Similar to #calendar:startDate
, allows changing the attribute
+ which is being used to read the end date.
+
+
+ #calendar:startTime
+
+ Similar to #calendar:startDate
, allows changing the attribute
+ which is being used to read the start time.
+
+
+ #calendar:endTime
+
+ Similar to #calendar:startDate
, allows changing the attribute
+ which is being used to read the end time.
How the calendar works
-
+
The calendar displays all the child notes of the book that have a #startDate
.
An #endDate
can optionally be added.
@@ -208,7 +259,7 @@
#hidePromotedAttributes
This will result in:
-
+
When not used in a Journal, the calendar is recursive. That is, it will
look for events not just in its child notes but also in the children of
@@ -233,31 +284,30 @@
will not be displayed.
-
+
Using a different attribute as event title
By default, events are displayed on the calendar by their note title.
However, it is possible to configure a different attribute to be displayed
instead.
To do so, assign #calendar:title
to the child note (not the
- calendar/book note), with the value being #name
where name
can
- be any label. The attribute can also come through inheritance such as a
- template attribute. If the note does not have the requested label, the
- title of the note will be used instead.
+ calendar/book note), with the value being name
where name
can
+ be any label (make not to add the #
prefix). The attribute can
+ also come through inheritance such as a template attribute. If the note
+ does not have the requested label, the title of the note will be used instead.
-
-
+
+
-
-
+ #startDate=2025-02-11 #endDate=2025-02-13 #name="My vacation" #calendar:title="name"
-
+
@@ -265,7 +315,7 @@
Using a relation attribute as event title
Similarly to using an attribute, use #calendar:title
and set
- it to ~name
where name
is the name of the relation
+ it to name
where name
is the name of the relation
to use.
Moreover, if there are more relations of the same name, they will be displayed
as multiple events coming from the same note.
@@ -278,11 +328,10 @@
-
-
+ #startDate=2025-02-14 #endDate=2025-02-15 ~for=@John Smith ~for=@Jane Doe #calendar:title="for"
-
+
@@ -301,8 +350,7 @@
-
-
+ #calendar:title="shortName" #shortName="John S."
diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Admonitions.html b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Admonitions.html
index 5c79e1bf9..c1e0f9df1 100644
--- a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Admonitions.html
+++ b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Admonitions.html
@@ -13,62 +13,59 @@
Admonitions
-
-
-
-
-
-
Admonitions are a way to highlight information to the reader. Other names
- for it include call-outs and info/warning/alert boxes .
-
Inserting a new admonition
-
From the UI
-
In the Formatting toolbar:
-
-
-
-
Via the keyboard
-
It's possible to insert an admonition simply by typing:
-
- !!! note
-
- !!! tip
-
- !!! important
-
- !!! caution
-
- !!! warning
-
-
-
In addition to that, it's also possible to type !!!
followed
- by any text, case in which a default admonition type will appear (note)
- with the entered text inside it.
-
Interaction
-
By design, admonitions act very similar to block quotes.
-
- Selecting a text and pressing the admonition button will turn that text
- into an admonition.
- If selecting multiple admonitions, pressing the admonition button will
- automatically merge them into one.
-
-
Inside an admonition:
-
- Pressing Backspace while the admonition is empty will remove
- it.
- Pressing Enter will start a new paragraph. Pressing it twice
- will exit out of the admonition.
- Headings and other block content including tables can be inserted inside
- the admonition.
-
-
Types of admonitions
-
There are currently five types of admonitions: Note , Tip , Important , Caution , Warning .
-
These types were inspired by GitHub's support for this feature and there
- are currently no plans for adjusting it or allowing the user to customize
- them.
-
Markdown support
-
The Markdown syntax for admonitions as supported by Trilium is the one
- that GitHub uses, which is as follows:
> [!NOTE]
+
+
+
+ Admonitions are a way to highlight information to the reader. Other names
+ for it include call-outs and info/warning/alert boxes .
+ Inserting a new admonition
+ From the UI
+ In the Formatting toolbar:
+
+
+
+ Via the keyboard
+ It's possible to insert an admonition simply by typing:
+
+ !!! note
+
+ !!! tip
+
+ !!! important
+
+ !!! caution
+
+ !!! warning
+
+
+ In addition to that, it's also possible to type !!!
followed
+ by any text, case in which a default admonition type will appear (note)
+ with the entered text inside it.
+ Interaction
+ By design, admonitions act very similar to block quotes.
+
+ Selecting a text and pressing the admonition button will turn that text
+ into an admonition.
+ If selecting multiple admonitions, pressing the admonition button will
+ automatically merge them into one.
+
+ Inside an admonition:
+
+ Pressing Backspace while the admonition is empty will remove
+ it.
+ Pressing Enter will start a new paragraph. Pressing it twice
+ will exit out of the admonition.
+ Headings and other block content including tables can be inserted inside
+ the admonition.
+
+ Types of admonitions
+ There are currently five types of admonitions: Note , Tip , Important , Caution , Warning .
+ These types were inspired by GitHub's support for this feature and there
+ are currently no plans for adjusting it or allowing the user to customize
+ them.
+ Markdown support
+ The Markdown syntax for admonitions as supported by Trilium is the one
+ that GitHub uses, which is as follows:
> [!NOTE]
> This is a note.
> [!TIP]
@@ -79,10 +76,8 @@
> [!CAUTION]
> This is a caution.
- There are currently no plans of supporting alternative admonition syntaxes
- such as !!! note
.
-
-
+
There are currently no plans of supporting alternative admonition syntaxes
+ such as !!! note
.