Radish alpha
r
Radicle web interface
Radicle
Git (anonymous pull)
Log in to clone via SSH
Switch to @radicle/gray-matter fork
Alexis Sellier committed 4 years ago
commit 6f2f8c454fa72fc2b9f65531e9e95ad6c0752470
parent 8e77f9f5aec5bb64cc7f25d807fbfb94d429b6d0
6 files changed +308 -51
modified index.html
@@ -23,6 +23,12 @@
      // dependencies.
      window.global = window;
    </script>
+

+
    <script type="module">
+
      // Make global 'Buffer' available to legacy modules.
+
      import { Buffer } from "buffer";
+
      window.Buffer = Buffer;
+
    </script>
    <title>Radicle Interface</title>
  </head>
  <body>
modified package-lock.json
@@ -12,6 +12,7 @@
        "@gnosis.pm/safe-core-sdk": "^0.3.1",
        "@gnosis.pm/safe-core-sdk-types": "^0.1.1",
        "@gnosis.pm/safe-service-client": "^0.1.1",
+
        "@radicle/gray-matter": "4.1.0",
        "@self.id/core": "^0.1.0",
        "@stardazed/streams": "^3.1.0",
        "@types/marked": "^4.0.1",
@@ -25,7 +26,6 @@
        "ethereum-blockies": "^0.1.1",
        "ethers": "^5.0.31",
        "eventemitter3": "4.0.7",
-
        "front-matter": "4.0.2",
        "marked": "^4.0.12",
        "multibase": "^4.0.4",
        "multihashes": "^4.0.2",
@@ -1977,6 +1977,28 @@
        "cypress": "*"
      }
    },
+
    "node_modules/@cypress/code-coverage/node_modules/argparse": {
+
      "version": "1.0.10",
+
      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+
      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+
      "dev": true,
+
      "dependencies": {
+
        "sprintf-js": "~1.0.2"
+
      }
+
    },
+
    "node_modules/@cypress/code-coverage/node_modules/js-yaml": {
+
      "version": "3.14.1",
+
      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+
      "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+
      "dev": true,
+
      "dependencies": {
+
        "argparse": "^1.0.7",
+
        "esprima": "^4.0.0"
+
      },
+
      "bin": {
+
        "js-yaml": "bin/js-yaml.js"
+
      }
+
    },
    "node_modules/@cypress/request": {
      "version": "2.88.10",
      "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.10.tgz",
@@ -2085,6 +2107,15 @@
        "url": "https://github.com/sponsors/epoberezkin"
      }
    },
+
    "node_modules/@eslint/eslintrc/node_modules/argparse": {
+
      "version": "1.0.10",
+
      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+
      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+
      "dev": true,
+
      "dependencies": {
+
        "sprintf-js": "~1.0.2"
+
      }
+
    },
    "node_modules/@eslint/eslintrc/node_modules/globals": {
      "version": "13.12.0",
      "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz",
@@ -2109,6 +2140,19 @@
        "node": ">= 4"
      }
    },
+
    "node_modules/@eslint/eslintrc/node_modules/js-yaml": {
+
      "version": "3.14.1",
+
      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+
      "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+
      "dev": true,
+
      "dependencies": {
+
        "argparse": "^1.0.7",
+
        "esprima": "^4.0.0"
+
      },
+
      "bin": {
+
        "js-yaml": "bin/js-yaml.js"
+
      }
+
    },
    "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": {
      "version": "0.4.1",
      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
@@ -2929,6 +2973,28 @@
        "node": ">=8"
      }
    },
+
    "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": {
+
      "version": "1.0.10",
+
      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+
      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+
      "dev": true,
+
      "dependencies": {
+
        "sprintf-js": "~1.0.2"
+
      }
+
    },
+
    "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": {
+
      "version": "3.14.1",
+
      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+
      "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+
      "dev": true,
+
      "dependencies": {
+
        "argparse": "^1.0.7",
+
        "esprima": "^4.0.0"
+
      },
+
      "bin": {
+
        "js-yaml": "bin/js-yaml.js"
+
      }
+
    },
    "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": {
      "version": "5.0.0",
      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
@@ -3030,6 +3096,20 @@
      "resolved": "https://registry.npmjs.org/@pedrouid/environment/-/environment-1.0.1.tgz",
      "integrity": "sha512-HaW78NszGzRZd9SeoI3JD11JqY+lubnaOx7Pewj5pfjqWXOEATpeKIFb9Z4t2WBUK2iryiXX3lzWwmYWgUL0Ug=="
    },
+
    "node_modules/@radicle/gray-matter": {
+
      "version": "4.1.0",
+
      "resolved": "https://registry.npmjs.org/@radicle/gray-matter/-/gray-matter-4.1.0.tgz",
+
      "integrity": "sha512-Cbdz8QMzIuZXxeGpJtvnNiMYF4YTOJn1EDsEZ0GsgCVWVL96LGPZIu30/bEtw2U8p7anZuQNqa4ugqB+qsEjqw==",
+
      "dependencies": {
+
        "js-yaml": "^4.1.0",
+
        "kind-of": "^6.0.2",
+
        "section-matter": "^1.0.0",
+
        "strip-bom-string": "^1.0.0"
+
      },
+
      "engines": {
+
        "node": ">=6.0"
+
      }
+
    },
    "node_modules/@rollup/pluginutils": {
      "version": "4.1.2",
      "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.1.2.tgz",
@@ -3940,12 +4020,9 @@
      "dev": true
    },
    "node_modules/argparse": {
-
      "version": "1.0.10",
-
      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
-
      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
-
      "dependencies": {
-
        "sprintf-js": "~1.0.2"
-
      }
+
      "version": "2.0.1",
+
      "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+
      "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
    },
    "node_modules/aria-query": {
      "version": "5.0.0",
@@ -6199,6 +6276,15 @@
        "url": "https://github.com/sponsors/epoberezkin"
      }
    },
+
    "node_modules/eslint/node_modules/argparse": {
+
      "version": "1.0.10",
+
      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+
      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+
      "dev": true,
+
      "dependencies": {
+
        "sprintf-js": "~1.0.2"
+
      }
+
    },
    "node_modules/eslint/node_modules/eslint-utils": {
      "version": "2.1.0",
      "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
@@ -6247,6 +6333,19 @@
        "node": ">= 4"
      }
    },
+
    "node_modules/eslint/node_modules/js-yaml": {
+
      "version": "3.14.1",
+
      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+
      "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+
      "dev": true,
+
      "dependencies": {
+
        "argparse": "^1.0.7",
+
        "esprima": "^4.0.0"
+
      },
+
      "bin": {
+
        "js-yaml": "bin/js-yaml.js"
+
      }
+
    },
    "node_modules/eslint/node_modules/json-schema-traverse": {
      "version": "0.4.1",
      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
@@ -6307,6 +6406,7 @@
      "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,
      "bin": {
        "esparse": "bin/esparse.js",
        "esvalidate": "bin/esvalidate.js"
@@ -6553,6 +6653,17 @@
      "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
      "dev": true
    },
+
    "node_modules/extend-shallow": {
+
      "version": "2.0.1",
+
      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+
      "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+
      "dependencies": {
+
        "is-extendable": "^0.1.0"
+
      },
+
      "engines": {
+
        "node": ">=0.10.0"
+
      }
+
    },
    "node_modules/extract-zip": {
      "version": "2.0.1",
      "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
@@ -6849,14 +6960,6 @@
        }
      ]
    },
-
    "node_modules/front-matter": {
-
      "version": "4.0.2",
-
      "resolved": "https://registry.npmjs.org/front-matter/-/front-matter-4.0.2.tgz",
-
      "integrity": "sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==",
-
      "dependencies": {
-
        "js-yaml": "^3.13.1"
-
      }
-
    },
    "node_modules/fs-extra": {
      "version": "9.1.0",
      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
@@ -7544,6 +7647,14 @@
        "url": "https://github.com/sponsors/ljharb"
      }
    },
+
    "node_modules/is-extendable": {
+
      "version": "0.1.1",
+
      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+
      "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+
      "engines": {
+
        "node": ">=0.10.0"
+
      }
+
    },
    "node_modules/is-extglob": {
      "version": "2.1.1",
      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
@@ -7945,12 +8056,11 @@
      "devOptional": true
    },
    "node_modules/js-yaml": {
-
      "version": "3.14.1",
-
      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
-
      "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+
      "version": "4.1.0",
+
      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+
      "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
      "dependencies": {
-
        "argparse": "^1.0.7",
-
        "esprima": "^4.0.0"
+
        "argparse": "^2.0.1"
      },
      "bin": {
        "js-yaml": "bin/js-yaml.js"
@@ -8133,6 +8243,14 @@
      "resolved": "https://registry.npmjs.org/keyvaluestorage-interface/-/keyvaluestorage-interface-1.0.0.tgz",
      "integrity": "sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g=="
    },
+
    "node_modules/kind-of": {
+
      "version": "6.0.3",
+
      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+
      "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+
      "engines": {
+
        "node": ">=0.10.0"
+
      }
+
    },
    "node_modules/kleur": {
      "version": "4.1.4",
      "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz",
@@ -10088,6 +10206,18 @@
        "node": ">=10.0.0"
      }
    },
+
    "node_modules/section-matter": {
+
      "version": "1.0.0",
+
      "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz",
+
      "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==",
+
      "dependencies": {
+
        "extend-shallow": "^2.0.1",
+
        "kind-of": "^6.0.0"
+
      },
+
      "engines": {
+
        "node": ">=4"
+
      }
+
    },
    "node_modules/semver": {
      "version": "6.3.0",
      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
@@ -10303,7 +10433,8 @@
    "node_modules/sprintf-js": {
      "version": "1.0.3",
      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
-
      "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
+
      "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+
      "dev": true
    },
    "node_modules/sshpk": {
      "version": "1.17.0",
@@ -10463,6 +10594,14 @@
        "node": ">=8"
      }
    },
+
    "node_modules/strip-bom-string": {
+
      "version": "1.0.0",
+
      "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz",
+
      "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=",
+
      "engines": {
+
        "node": ">=0.10.0"
+
      }
+
    },
    "node_modules/strip-final-newline": {
      "version": "2.0.0",
      "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
@@ -12956,6 +13095,27 @@
        "istanbul-lib-coverage": "3.0.0",
        "js-yaml": "3.14.1",
        "nyc": "15.1.0"
+
      },
+
      "dependencies": {
+
        "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"
+
          }
+
        },
+
        "js-yaml": {
+
          "version": "3.14.1",
+
          "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+
          "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+
          "dev": true,
+
          "requires": {
+
            "argparse": "^1.0.7",
+
            "esprima": "^4.0.0"
+
          }
+
        }
      }
    },
    "@cypress/request": {
@@ -13052,6 +13212,15 @@
            "uri-js": "^4.2.2"
          }
        },
+
        "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"
+
          }
+
        },
        "globals": {
          "version": "13.12.0",
          "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz",
@@ -13067,6 +13236,16 @@
          "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
          "dev": true
        },
+
        "js-yaml": {
+
          "version": "3.14.1",
+
          "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+
          "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+
          "dev": true,
+
          "requires": {
+
            "argparse": "^1.0.7",
+
            "esprima": "^4.0.0"
+
          }
+
        },
        "json-schema-traverse": {
          "version": "0.4.1",
          "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
@@ -13555,6 +13734,25 @@
        "resolve-from": "^5.0.0"
      },
      "dependencies": {
+
        "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"
+
          }
+
        },
+
        "js-yaml": {
+
          "version": "3.14.1",
+
          "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+
          "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+
          "dev": true,
+
          "requires": {
+
            "argparse": "^1.0.7",
+
            "esprima": "^4.0.0"
+
          }
+
        },
        "resolve-from": {
          "version": "5.0.0",
          "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
@@ -13642,6 +13840,17 @@
      "resolved": "https://registry.npmjs.org/@pedrouid/environment/-/environment-1.0.1.tgz",
      "integrity": "sha512-HaW78NszGzRZd9SeoI3JD11JqY+lubnaOx7Pewj5pfjqWXOEATpeKIFb9Z4t2WBUK2iryiXX3lzWwmYWgUL0Ug=="
    },
+
    "@radicle/gray-matter": {
+
      "version": "4.1.0",
+
      "resolved": "https://registry.npmjs.org/@radicle/gray-matter/-/gray-matter-4.1.0.tgz",
+
      "integrity": "sha512-Cbdz8QMzIuZXxeGpJtvnNiMYF4YTOJn1EDsEZ0GsgCVWVL96LGPZIu30/bEtw2U8p7anZuQNqa4ugqB+qsEjqw==",
+
      "requires": {
+
        "js-yaml": "^4.1.0",
+
        "kind-of": "^6.0.2",
+
        "section-matter": "^1.0.0",
+
        "strip-bom-string": "^1.0.0"
+
      }
+
    },
    "@rollup/pluginutils": {
      "version": "4.1.2",
      "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.1.2.tgz",
@@ -14377,12 +14586,9 @@
      "dev": true
    },
    "argparse": {
-
      "version": "1.0.10",
-
      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
-
      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
-
      "requires": {
-
        "sprintf-js": "~1.0.2"
-
      }
+
      "version": "2.0.1",
+
      "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+
      "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
    },
    "aria-query": {
      "version": "5.0.0",
@@ -16124,6 +16330,15 @@
            "uri-js": "^4.2.2"
          }
        },
+
        "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"
+
          }
+
        },
        "eslint-utils": {
          "version": "2.1.0",
          "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
@@ -16156,6 +16371,16 @@
          "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
          "dev": true
        },
+
        "js-yaml": {
+
          "version": "3.14.1",
+
          "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+
          "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+
          "dev": true,
+
          "requires": {
+
            "argparse": "^1.0.7",
+
            "esprima": "^4.0.0"
+
          }
+
        },
        "json-schema-traverse": {
          "version": "0.4.1",
          "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
@@ -16239,7 +16464,8 @@
    "esprima": {
      "version": "4.0.1",
      "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
-
      "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
+
      "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+
      "dev": true
    },
    "esquery": {
      "version": "1.4.0",
@@ -16439,6 +16665,14 @@
      "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
      "dev": true
    },
+
    "extend-shallow": {
+
      "version": "2.0.1",
+
      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+
      "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+
      "requires": {
+
        "is-extendable": "^0.1.0"
+
      }
+
    },
    "extract-zip": {
      "version": "2.0.1",
      "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
@@ -16652,14 +16886,6 @@
      "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==",
      "dev": true
    },
-
    "front-matter": {
-
      "version": "4.0.2",
-
      "resolved": "https://registry.npmjs.org/front-matter/-/front-matter-4.0.2.tgz",
-
      "integrity": "sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==",
-
      "requires": {
-
        "js-yaml": "^3.13.1"
-
      }
-
    },
    "fs-extra": {
      "version": "9.1.0",
      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
@@ -17156,6 +17382,11 @@
        "has-tostringtag": "^1.0.0"
      }
    },
+
    "is-extendable": {
+
      "version": "0.1.1",
+
      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+
      "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik="
+
    },
    "is-extglob": {
      "version": "2.1.1",
      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
@@ -17440,12 +17671,11 @@
      "devOptional": true
    },
    "js-yaml": {
-
      "version": "3.14.1",
-
      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
-
      "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+
      "version": "4.1.0",
+
      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+
      "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
      "requires": {
-
        "argparse": "^1.0.7",
-
        "esprima": "^4.0.0"
+
        "argparse": "^2.0.1"
      }
    },
    "jsbn": {
@@ -17591,6 +17821,11 @@
      "resolved": "https://registry.npmjs.org/keyvaluestorage-interface/-/keyvaluestorage-interface-1.0.0.tgz",
      "integrity": "sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g=="
    },
+
    "kind-of": {
+
      "version": "6.0.3",
+
      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+
      "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="
+
    },
    "kleur": {
      "version": "4.1.4",
      "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz",
@@ -19103,6 +19338,15 @@
        "node-gyp-build": "^4.2.0"
      }
    },
+
    "section-matter": {
+
      "version": "1.0.0",
+
      "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz",
+
      "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==",
+
      "requires": {
+
        "extend-shallow": "^2.0.1",
+
        "kind-of": "^6.0.0"
+
      }
+
    },
    "semver": {
      "version": "6.3.0",
      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
@@ -19265,7 +19509,8 @@
    "sprintf-js": {
      "version": "1.0.3",
      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
-
      "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
+
      "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+
      "dev": true
    },
    "sshpk": {
      "version": "1.17.0",
@@ -19398,6 +19643,11 @@
      "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
      "dev": true
    },
+
    "strip-bom-string": {
+
      "version": "1.0.0",
+
      "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz",
+
      "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI="
+
    },
    "strip-final-newline": {
      "version": "2.0.0",
      "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
modified package.json
@@ -37,6 +37,7 @@
    "@gnosis.pm/safe-core-sdk": "^0.3.1",
    "@gnosis.pm/safe-core-sdk-types": "^0.1.1",
    "@gnosis.pm/safe-service-client": "^0.1.1",
+
    "@radicle/gray-matter": "4.1.0",
    "@self.id/core": "^0.1.0",
    "@stardazed/streams": "^3.1.0",
    "@types/marked": "^4.0.1",
@@ -50,7 +51,6 @@
    "ethereum-blockies": "^0.1.1",
    "ethers": "^5.0.31",
    "eventemitter3": "4.0.7",
-
    "front-matter": "4.0.2",
    "marked": "^4.0.12",
    "multibase": "^4.0.4",
    "multihashes": "^4.0.2",
modified src/Markdown.svelte
@@ -1,15 +1,16 @@
<script lang="ts">
  import { onMount } from "svelte";
  import { marked } from "marked";
-
  import fm from "front-matter";
-
  import type { FrontMatterResult } from "front-matter";
+
  import matter from "@radicle/gray-matter";
  import type * as proj from "@app/project";
  import { getImageMime } from "@app/utils";
  import sanitizeHtml from "sanitize-html";

  export let content: string;
-
  export let doc: FrontMatterResult<Record<string, string>> = fm(content);
  export let getImage: (path: string) => Promise<proj.Blob>;
+
  export let doc = matter(content);
+

+
  const frontMatter = Object.entries(doc.data);

  let container: HTMLElement;

@@ -220,10 +221,10 @@
</style>

{#if content}
-
  {#if doc.frontmatter}
+
  {#if frontMatter.length > 0}
    <div class="front-matter">
      <table>
-
        {#each Object.entries(doc.attributes) as [key, val]}
+
        {#each frontMatter as [key, val]}
          <tr>
            <td><strong>{key}</strong></td>
            <td>{val}</td>
@@ -234,6 +235,6 @@
  {/if}

  <div class="markdown" bind:this={container}>
-
    {@html render(doc.body)}
+
    {@html render(doc.content)}
  </div>
{/if}
modified src/RadicleUrn.svelte
@@ -1,5 +1,5 @@
<script lang="ts">
-
  import { parseRadicleId, toClipboard } from "./utils";
+
  import { parseRadicleId, toClipboard } from "@app/utils";

  export let urn: string;

modified src/anchors.ts
@@ -1,6 +1,6 @@
import { ethers } from "ethers";
import type { Config } from "./config";
-
import { decodeRadicleId, formatProjectHash, querySubgraph } from "./utils";
+
import { decodeRadicleId, formatProjectHash, querySubgraph } from "@app/utils";

const GetAllAnchors = `
  query GetAllAnchors($project: Bytes!, $org: ID!) {